用 matplotlib 绘制精美的图表
matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。本节通过几个样例来介绍下如何使用matplotlib绘制精美的图表
安装方法
pip install matplotlib
绘制一元函数图像y=ax+b
创建single_variable.py,内容如下:
# coding:utf-8import sysreload(sys)sys.setdefaultencoding( "utf-8" )import matplotlib.pyplot as pltimport numpy as npplt.figure() # 实例化作图变量plt.title('single variable') # 图像标题plt.xlabel('x') # x轴文本plt.ylabel('y') # y轴文本plt.axis([0, 5, 0, 10]) # x轴范围0-5,y轴范围0-10plt.grid(True) # 是否绘制网格线xx = np.linspace(0, 5, 10) # 在0-5之间生成10个点的向量plt.plot(xx, 2*xx, 'g-') # 绘制y=2x图像,颜色green,形式为线条plt.show() # 展示图像
执行后图像:
绘制正弦曲线y=sin(x)
创建sinx.py,内容如下:
# coding:utf-8import sysreload(sys)sys.setdefaultencoding( "utf-8" )import matplotlib.pyplot as pltimport numpy as npplt.figure() # 实例化作图变量plt.title('single variable') # 图像标题plt.xlabel('x') # x轴文本plt.ylabel('y') # y轴文本plt.axis([-12, 12, -1, 1]) # x轴范围-12到12,y轴范围-1到1plt.grid(True) # 是否绘制网格线xx = np.linspace(-12, 12, 1000) # 在-12到12之间生成1000个点的向量plt.plot(xx, np.sin(xx), 'g-', label="$sin(x)$") # 绘制y=sin(x)图像,颜色green,形式为线条plt.plot(xx, np.cos(xx), 'r--', label="$cos(x)$") # 绘制y=cos(x)图像,颜色red,形式为虚线plt.legend() # 绘制图例plt.show() # 展示图像
执行后图像:
绘制多轴图
创建multi_axis.py内容如下:
# coding:utf-8import sysreload(sys)sys.setdefaultencoding( "utf-8" )import matplotlib.pyplot as pltimport numpy as npdef draw(plt): plt.axis([-12, 12, -1, 1]) # x轴范围-12到12,y轴范围-1到1 plt.grid(True) # 是否绘制网格线 xx = np.linspace(-12, 12, 1000) # 在-12到12之间生成1000个点的向量 plt.plot(xx, np.sin(xx), 'g-', label="$sin(x)$") # 绘制y=sin(x)图像,颜色green,形式为线条 plt.plot(xx, np.cos(xx), 'r--', label="$cos(x)$") # 绘制y=cos(x)图像,颜色red,形式为虚线 plt.legend() # 绘制图例plt.figure() # 实例化作图变量plt1 = plt.subplot(2,2,1) # 两行两列中的第1张图draw(plt1)plt2 = plt.subplot(2,2,2) # 两行两列中的第2张图draw(plt2)plt3 = plt.subplot(2,2,3) # 两行两列中的第3张图draw(plt3)plt4 = plt.subplot(2,2,4) # 两行两列中的第4张图draw(plt4)plt.show() # 展示图像
执行后图像:
绘制3D图像
创建plot_3d.py,内容如下:
# coding:utf-8import sysreload(sys)sys.setdefaultencoding( "utf-8" )from mpl_toolkits.mplot3d import Axes3Dimport numpy as npimport matplotlib.pyplot as pltfig = plt.figure()ax = fig.add_subplot(1,1,1,projection='3d')theta = np.linspace(-4 * np.pi, 4 * np.pi, 500) # theta旋转角从-4pi到4pi,相当于两圈z = np.linspace(0, 2, 500) # z轴从下到上,从-2到2之间画100个点r = z # 半径设置为z大小x = r * np.sin(theta) # x和y画圆y = r * np.cos(theta) # x和y画圆ax.plot(x, y, z, label='curve')ax.legend()plt.show()
执行后图像:
3D散点图
创建plot_3d_scatter.py,内容如下:
# coding:utf-8import sysreload(sys)sys.setdefaultencoding( "utf-8" )from mpl_toolkits.mplot3d import Axes3Dimport numpy as npimport matplotlib.pyplot as pltfig = plt.figure()ax = fig.add_subplot(1,1,1,projection='3d')xx = np.linspace(0, 5, 10) # 在0-5之间生成10个点的向量yy = np.linspace(0, 5, 10) # 在0-5之间生成10个点的向量zz1 = xxzz2 = 2*xxzz3 = 3*xxax.scatter(xx, yy, zz1, c='red', marker='o') # o型符号ax.scatter(xx, yy, zz2, c='green', marker='^') # 三角型符号ax.scatter(xx, yy, zz3, c='black', marker='*') # 星型符号ax.legend()plt.show()
执行后图像:
绘制3D表面
创建plot_3d_surface.py,内容如下:
# coding:utf-8import sysreload(sys)sys.setdefaultencoding( "utf-8" )from mpl_toolkits.mplot3d import Axes3Dfrom matplotlib import cmfrom matplotlib.ticker import LinearLocator, FormatStrFormatterimport matplotlib.pyplot as pltimport numpy as npfig = plt.figure()ax = fig.gca(projection='3d')X = np.arange(-5, 5, 0.25)Y = np.arange(-5, 5, 0.25)X, Y = np.meshgrid(X, Y)Z = X 2+Y 2ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=0, antialiased=False)plt.show()
执行后图像:
关键字:numpy, 向量, 设计, 产品经理
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!