可视化图表,有相当多种,但常见的也就下面几种,其他比较复杂一点,大都也是基于如下几种进行组合,变换出来的。对于初学者来说,很容易被这官网上众多的图表类型给吓着了,由于种类太多,几种图表的绘制方法很有可能会混淆起来。
因此,在这里,我特地总结了六种常见的基本图表类型,你可以通过对比学习,打下坚实的基础。
01. 折线图
绘制折线图,如果你数据不是很多的话,画出来的图将是曲折状态,但一旦你的数据集大起来,比如下面我们的示例,有100个点,所以我们用肉眼看到的将是一条平滑的曲线。
这里我绘制三条线,只要执行三次 plt.plot 就可以了。
import numpy as np import matplotlib.pyplot as plt x= np.linspace(0, 2, 100) plt.plot(x, x, label='linear') plt.plot(x, x**2, label='quadratic') plt.plot(x, x**3, label='cubic') plt.xlabel('x label') plt.ylabel('y label') plt.title("Simple Plot") plt.legend() plt.show()
02. 散点图
其实散点图和折线图是一样的原理,将散点图里的点用线连接起来就是折线图了。所以绘制散点图,只要设置一下线型即可。
注意:这里我也绘制三条线,和上面不同的是,我只用一个 plt.plot 就可以了。
import numpy as np import matplotlib.pyplot as plt x = np.arange(0., 5., 0.2) # 红色破折号, 蓝色方块 ,绿色三角块 plt.plot(x, x, 'r--', x, x**2, 'bs', x, x**3, 'g^') plt.show()
03. 直方图
直方图,大家也不算陌生了。这里小明加大难度,在一张图里,画出两个频度直方图。这应该在实际场景上也会遇到吧,因为这样真的很方便比较,有木有?
import numpy as np import matplotlib.pyplot as plt np.random.seed(19680801) mu1, sigma1 = 100, 15 mu2, sigma2 = 80, 15 x1 = mu1 + sigma1 * np.random.randn(10000) x2 = mu2 + sigma2 * np.random.randn(10000) # the histogram of the data # 50:将数据分成50组 # facecolor:颜色;alpha:透明度 # density:是密度而不是具体数值 n1, bins1, patches1 = plt.hist(x1, 50, density=True, facecolor='g', alpha=1) n2, bins2, patches2 = plt.hist(x2, 50, density=True, facecolor='r', alpha=0.2) # n:概率值;bins:具体数值;patches:直方图对象。 plt.xlabel('Smarts') plt.ylabel('Probability') plt.title('Histogram of IQ') plt.text(110, .025, r'$\mu=100,\ \sigma=15$') plt.text(50, .025, r'$\mu=80,\ \sigma=15$') # 设置x,y轴的具体范围 plt.axis([40, 160, 0, 0.03]) plt.grid(True) plt.show()
04. 柱状图
同样的,简单的柱状图,我就不画了,这里画三种比较难的图。
4.1 并列柱状图
import numpy as np import matplotlib.pyplot as plt size = 5 a = np.random.random(size) b = np.random.random(size) c = np.random.random(size) x = np.arange(size) # 有多少个类型,只需更改n即可 total_width, n = 0.8, 3 width = total_width / n # 重新拟定x的坐标 x = x - (total_width - width) / 2 # 这里使用的是偏移 plt.bar(x, a, width=width, label='a') plt.bar(x + width, b, width=width, label='b') plt.bar(x + 2 * width, c, width=width, label='c') plt.legend() plt.show()
4.2 叠加柱状图
import numpy as np import matplotlib.pyplot as plt size = 5 a = np.random.random(size) b = np.random.random(size) c = np.random.random(size) x = np.arange(size) # 这里使用的是偏移 plt.bar(x, a, width=0.5, label='a',fc='r') plt.bar(x, b, bottom=a, width=0.5, label='b', fc='g') plt.bar(x, c, bottom=a+b, width=0.5, label='c', fc='b') plt.ylim(0, 2.5) plt.legend() plt.grid(True) plt.show()
05. 饼图
5.1 普通饼图
import matplotlib.pyplot as plt labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' sizes = [15, 30, 45, 10] # 设置分离的距离,0表示不分离 explode = (0, 0.1, 0, 0) plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90) # Equal aspect ratio 保证画出的图是正圆形 plt.axis('equal') plt.show()
5.2 嵌套饼图
import numpy as np import matplotlib.pyplot as plt # 设置每环的宽度 size = 0.3 vals = np.array([[60., 32.], [37., 40.], [29., 10.]]) # 通过get_cmap随机获取颜色 cmap = plt.get_cmap("tab20c") outer_colors = cmap(np.arange(3)*4) inner_colors = cmap(np.array([1, 2, 5, 6, 9, 10])) print(vals.sum(axis=1)) # [92. 77. 39.] plt.pie(vals.sum(axis=1), radius=1, colors=outer_colors, wedgeprops=dict(width=size, edgecolor='w')) print(vals.flatten()) # [60. 32. 37. 40. 29. 10.] plt.pie(vals.flatten(), radius=1-size, colors=inner_colors, wedgeprops=dict(width=size, edgecolor='w')) # equal 使得为正圆 plt.axis('equal') plt.show()
5.3 极轴饼图
要说酷炫,极轴饼图也是数一数二的了,这里肯定也要学一下。
import numpy as np import matplotlib.pyplot as plt np.random.seed(19680801) N = 10 theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False) radii = 10 * np.random.rand(N) width = np.pi / 4 * np.random.rand(N) ax = plt.subplot(111, projection='polar') bars = ax.bar(theta, radii, width=width, bottom=0.0) # left表示从哪开始, # radii表示从中心点向边缘绘制的长度(半径) # width表示末端的弧长 # 自定义颜色和不透明度 for r, bar in zip(radii, bars): bar.set_facecolor(plt.cm.viridis(r / 10.)) bar.set_alpha(0.5) plt.show()
06. 三维图
6.1 绘制三维散点图
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D data = np.random.randint(0, 255, size=[40, 40, 40]) x, y, z = data[0], data[1], data[2] ax = plt.subplot(111, projection='3d') # 创建一个三维的绘图工程 # 将数据点分成三部分画,在颜色上有区分度 ax.scatter(x[:10], y[:10], z[:10], c='y') # 绘制数据点 ax.scatter(x[10:20], y[10:20], z[10:20], c='r') ax.scatter(x[30:40], y[30:40], z[30:40], c='g') ax.set_zlabel('Z') # 坐标轴 ax.set_ylabel('Y') ax.set_xlabel('X') plt.show()
6.2 绘制三维平面图
from matplotlib import pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = Axes3D(fig) X = np.arange(-4, 4, 0.25) Y = np.arange(-4, 4, 0.25) X, Y = np.meshgrid(X, Y) R = np.sqrt(X**2 + Y**2) Z = np.sin(R) # 具体函数方法可用 help(function) 查看,如:help(ax.plot_surface) ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow') plt.show()
总结
以上所述是小编给大家介绍的Python绘制六种可视化图表,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍Python绘制词云图之可视化神器pyecharts的方法,包括了Python绘制词云图之可视化神器pyecharts的方法的使用技巧和注意事项,需要的朋友参考一下 自定义图片生成词云图的多种方法 有时候我们会根据具体的场景来结合图片展示词云,比如我分析的是美团评论,那么最好的展示方法就是利用美团的logo来做词云图的底图展示,下面我们就介绍几种常用的方法! 根据喜爱的图片生成词云轮
表格是一种组织和可视化数据的强大方式。然而,无论数据如何组织,数字的大型表格可能难以解释。 有时解释图片比数字容易得多。 在本章中,我们将开发一些数据分析的基本图形方法。 我们的数据源是互联网电影数据库(IMDB),这是一个在线数据库,包含电影,电视节目,和视频游戏等信息。Box Office Mojo 网站提供了许多 IMDB 数据摘要,我们已经采用了其中一些。 我们也使用了 The Numbe
作品集投递收到了面试邀约,但是面试后却屡屡受挫?如果你也有这样的遭遇,是时候好好补习一下面试的话术能力了。 1、假如明天产品就要上线了,这时候PM突然又来了一个需求,你会怎么办? 这个问题主要考察的是抗压能力和应急反应能力 回答思路:先和PM、技术人员一起对接一下产品具体需求,了解一下需求内容的优先级,需求原型是否完善,以及开发成本 如果是一级必备需求,而且内容需求清晰完善,那就需要和PM、技术人
本文向大家介绍Python数据可视化:箱线图多种库画法,包括了Python数据可视化:箱线图多种库画法的使用技巧和注意事项,需要的朋友参考一下 概念 箱线图通过数据的四分位数来展示数据的分布情况。例如:数据的中心位置,数据间的离散程度,是否有异常值等。 把数据从小到大进行排列并等分成四份,第一分位数(Q1),第二分位数(Q2)和第三分位数(Q3)分别为数据的第25%,50%和75%的数字。 四分位
本文向大家介绍python绘制雪景图,包括了python绘制雪景图的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python绘制雪景图的具体代码,供大家参考,具体内容如下 绘制雪景图,应用到turtle和random。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍python绘制彩虹图,包括了python绘制彩虹图的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python绘制彩虹图的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。