python matplotlib数据作图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python matplotlib数据作图相关的知识,希望对你有一定的参考价值。
参考技术A一、使用numpy生成长度为100的等差序列作为自变量,命名为x,并使用三角函数SiNx和cosx**2生成两个因变量,命名为y和Z。
二、设置画布的大小、颜色、宽度、类型和标签。
三、通过plt.figure(figsize=(10,6))的画布。图((10,6))。
四、尝试plt.plot(x,y,color='red',linewidth=2,label='$\\sinx$')和plt.plot(x,z,'b--',label='$\\cosx^2$')。
五、分通过plt.xlabel('T')和plt.ylabel('V')设置X和Y轴的轴标签;并通过plt.title('V changes by T')为图形设置标题。
六、Y[:,0]=Y[:,0]*888表示修改第一个数据并将其展开888次;之后,使用上述设置时保持不变,发现另一行几乎是一条直线。
Python矩阵作图库matplotlib的初级使用
- matplotlib背景介绍:
第三方库matplotlib(没有的话,可在终端输入"pip install matplotlib"进行安装)是一款高质量的2D作图库,可被广泛地应用于支持Python的环境中。并且,如果在某些情境下需要绘制一些基础的3D图,这个时候可以结合标准库mpl_toolkits.mplot3d来使用。出于Python语言的便携性,从而为我们提供了一套轻量级的作图方案。
由于网络上的资料大多不太符合官方推荐的作图方式,且很多内容并没有一个清晰的逻辑。笔者此处重新整理几个简单的示例,仅供参考!
- 简单作图示例:
1 import numpy 2 import matplotlib.pyplot as plt 3 4 x = numpy.linspace(0, 2, 100) 5 6 plt.figure(figsize=(8, 4)) 7 8 plt.plot(x, x, label=\'linear\') 9 plt.plot(x, x**2, label=\'quadratic\') 10 plt.plot(x, x**3, label=\'cubic\') 11 12 # 设置展示区间 13 plt.xlim(-1, 3) 14 plt.ylim(-1, 10) 15 16 # 设置展示信息 17 plt.xlabel(\'$x$\') 18 plt.ylabel(\'$y$\') 19 plt.title(\'simple_plot\') 20 plt.legend(loc=\'best\') 21 22 # 保存图片 23 plt.savefig(fname=\'test_plot.png\', dpi=500) 24 25 # 展示图片 26 plt.show() 27 # 关闭图片 28 plt.close()
- 复杂作图示例:
明确三层作图对象:
1. 整个图片对象 $\\rightarrow$ figure
2. 图片内的子图对象 $\\rightarrow$ axes
3. 子图内的轴对象 $\\rightarrow$ axis
1 import numpy 2 import matplotlib.pyplot as plt 3 4 # 明确三层作图对象: figure, axes, axis 5 # 整个图片对象, 图片内的子图对象, 子图内的轴对象 6 7 x = numpy.linspace(0, 2, 100) 8 y = 1 + numpy.sin(2 * numpy.pi * x) 9 10 # 创建图片对象 11 fig = plt.figure(figsize=(8, 4)) 12 fig.suptitle(\'figure_title\') 13 14 # 创建子图对象 15 axes = plt.subplot() 16 axes.plot(x, y, label=\'$sin(x)$\') 17 axes.set(xlim=(-1, 3), ylim=(-1, 10), xlabel=\'$x$\', ylabel=\'$y$\', title=\'axes_title\') 18 axes.grid() 19 axes.legend() 20 21 # fig.tight_layout() 22 fig.savefig(\'test_plot.png\', dpi=500) 23 24 plt.show() 25 plt.close()
- 复杂作图 $\\rightarrow$ 多类型示例:
1 import numpy 2 import matplotlib.pyplot as plt 3 4 # 创建图片对象 5 fig = plt.figure(figsize=(8, 4)) 6 7 # 创建子图对象 8 ax1 = plt.subplot(2, 2, 1) 9 ax2 = plt.subplot(2, 2, 2) 10 ax3 = plt.subplot(2, 1, 2) 11 12 # 散点图 13 ax1.scatter(numpy.random.uniform(1, 11, 100), numpy.random.random(100), color=\'r\', marker=\'.\', label=\'scatter_label\') 14 ax1.set(xlabel=\'$x$\', ylabel=\'$y$\', title=\'scatter_title\') 15 ax1.legend() 16 17 # 盒型图 18 ax2.boxplot([numpy.arange(10), numpy.arange(10)]) 19 ax2.set_xticklabels([\'the first\', \'the second\'], rotation=10) # 重置坐标轴刻度并旋转 20 ax2.set(ylabel=\'$y$\', title=\'boxplot_title\') 21 22 # 条形图 23 ax3.bar(numpy.arange(1, 21), numpy.random.random(20), width=0.5, color=\'g\', label=\'bar_label\') 24 ax3.set(xlabel=\'$x$\', ylabel=\'$y$\', title=\'bar_title\') 25 ax3.legend() 26 27 fig.tight_layout() 28 fig.savefig(\'test_plot.png\', dpi=500) 29 30 plt.show() 31 plt.close()
- 复杂作图 $\\rightarrow$ 3D类型示例:
1 import numpy 2 import matplotlib.pyplot as plt 3 from matplotlib import cm 4 from matplotlib.ticker import LinearLocator, FormatStrFormatter 5 from mpl_toolkits.mplot3d import Axes3D # 该模块并未直接使用, 但必须导入, 否则无法识别下面的projection=\'3d\' 6 7 8 # 子图1的数据 - 一条曲线 9 theta = numpy.linspace(-4*numpy.pi, 4*numpy.pi, 500) 10 z1 = numpy.linspace(-2, 2, 500) 11 r = z1**2 + 1 12 x1 = r * numpy.sin(theta) 13 y1 = r * numpy.cos(theta) 14 15 # 子图2的数据 - 一个曲面 16 x2 = numpy.linspace(-5, 5, 100) 17 y2 = numpy.linspace(-5, 5, 100) 18 x2, y2 = numpy.meshgrid(x2, y2) # 生成网格 19 length = numpy.sqrt(x2**2 + y2**2) 20 z2 = numpy.sin(length) 21 22 # 创建图片对象 23 fig = plt.figure(figsize=(8, 4)) 24 25 # 创建子图对象 26 ax1 = plt.subplot(1, 2, 1, projection=\'3d\') # projection=\'3d\'标记该子图为3D子图 27 ax2 = plt.subplot(1, 2, 2, projection=\'3d\') 28 29 ax1.plot(x1, y1, z1, linewidth=1, label=\'3d curve\') 30 ax1.set(xlim=(-5, 5), ylim=(-5, 5), zlim=(-5, 5),xlabel=\'$x$\', ylabel=\'$y$\', zlabel=\'$z$\', title=\'curve_title\') 31 ax1.legend() 32 33 surf = ax2.plot_surface(x2, y2, z2, cmap=cm.coolwarm, antialiased=False) 34 ax2.set(zlim=(-1.01, 1.01), xlabel=\'$x$\', ylabel=\'$y$\', zlabel=\'$z$\', title=\'surface_title\') 35 # 设置子图内的轴对象 36 ax2.zaxis.set_major_locator(LinearLocator(10)) # z轴上的总刻度数 37 ax2.zaxis.set_major_formatter(FormatStrFormatter(\'%.02f\')) # z轴上刻度的格式 38 39 fig.colorbar(surf, shrink=0.5, aspect=10) # 展示颜色棒 40 41 fig.tight_layout() 42 fig.savefig(\'test_plot.png\', dpi=500) 43 44 plt.show() 45 plt.close()
- 参考:
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.subplots.html#matplotlib.pyplot.subplots
https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.plot.html#matplotlib.axes.Axes.plot
https://matplotlib.org/tutorials/toolkits/mplot3d.html
以上是关于python matplotlib数据作图的主要内容,如果未能解决你的问题,请参考以下文章