A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

对于折线图的绘制,在之前博客的示例中都有使用,在面向对象绘图方法中,一般是创建axes实例后调用plot()方法实现折线图绘制,并通过传递各种参数实现对图像的设置。 散点图的绘制通过axes实例的scatter()方法来实现。scatter()方法的参数和参数取值与绘制折线图的plot()方法基本一致,所以本文将两种图放在一起进行介绍。





1 多图像绘制


在一个axes中,可以绘制多条折线图,秩序多次调用plot()或者scatter()方法即可。




[size=16.639999389648438px]In [2]:

x1 = np.linspace(0.0, 5.0, 10)y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)fig, axes = plt.subplots(1, 2, figsize=(10, 3), tight_layout=True)# 折线图axes[0].set_title('图1 折 线 图')axes[0].plot(x1, y1)axes[0].plot(x1, y1+0.5)# 散点图axes[1].set_title('图2 散 点 图')axes[1].scatter(x1, y1)axes[1].scatter(x1, y1+0.5)plt.show()










2 颜色


颜色通过color参数来设置,color参数的值可以使颜色的英文全称,例如'green'、'red',也可以是简写,例如'g'表示'green'、'r表示'red',一些常见颜色全称和简写如下所示。

  • 'b' , blue
  • 'g' , green
  • 'r' , red
  • 'c' , cyan
  • 'm' , magenta
  • 'y' , yellow
  • 'k' , black
  • 'w' , white

如果觉得这些常见的颜色不够用,设置可以用16进制字符来表示颜色。




[size=16.639999389648438px]In [3]:

x1 = np.linspace(0.0, 5.0, 10)y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)fig, axes = plt.subplots(1, 2, figsize=(10, 3), tight_layout=True)# 折线图axes[0].set_title('图1 折 线 图')axes[0].plot(x1, y1, color='red')  # 红色axes[0].plot(x1, y1+0.5, color='g')  # 绿色axes[0].plot(x1, y1+1, color='#008000')  # 也是绿色# 散点图axes[1].set_title('图2 散 点 图')axes[1].scatter(x1, y1, color='red')  # 红色axes[1].scatter(x1, y1+0.5, color='g')  # 绿色axes[1].scatter(x1, y1+1, color='#008000')  # 也是绿色plt.show()










3 图例


axes实例中提供了legend()方法用于添加图例,legend()方法会将元素的label字符串设置为图例,如下面的示例所示,有两种参数传递方式来设置label。除了label外,还可以传递loc参数来设置图例的位置,loc参数值可以使代表位置的字符串,也可以是对应的整数,其对应关系如下所示:

    ===============   =============    Location String   Location Code    ===============   =============    'best'            0    'upper right'     1    'upper left'      2    'lower left'      3    'lower right'     4    'right'           5    'center left'     6    'center right'    7    'lower center'    8    'upper center'    9    'center'          10    ===============   =============


[size=16.639999389648438px]In [4]:

x1 = np.linspace(0.0, 5.0, 10)y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)fig, axes = plt.subplots(3, 2, figsize=(10, 8), tight_layout=True)axes[0, 0].plot(x1, y1, label='线1')  # 传递label参数axes[0, 0].plot(x1, y1+0.5, label='线2')  # 传递label参数axes[0, 0].legend(loc='best')  # 默认就是bestaxes[1, 0].plot(x1, y1, label='线1')  # 传递label参数axes[1, 0].plot(x1, y1+0.5, label='线2')  # 传递label参数axes[1, 0].legend(loc='lower right')line1, = axes[2, 0].plot(x1, y1)  # 注意,等号前面有逗号line2, = axes[2, 0].plot(x1, y1+0.5)axes[2, 0].legend(handles=(line1, line2), labels=('线1', '线2'), loc='upper center')axes[0, 1].scatter(x1, y1, label='第一组')  # 传递label参数axes[0, 1].scatter(x1, y1+0.5, label='第二组')  # 传递label参数axes[0, 1].legend(loc='best')  # 默认就是bestaxes[1, 1].scatter(x1, y1, label='第一组')  # 传递label参数axes[1, 1].scatter(x1, y1+0.5, label='第二组')  # 传递label参数axes[1, 1].legend(loc='lower right')group1 = axes[2, 1].scatter(x1, y1)   # 注意,等号前面没有逗号,这是与plot()方法不同的group2 = axes[2, 1].scatter(x1, y1+0.5) axes[2, 1].legend(handles=(group1, group2), labels=('第一组', '第二组'), loc='upper center')plt.show()










4 线型


通过传递linestyle或ls参数可以设置线型,参数包含一下几种取值:

    =============    ===============================    character        description    =============    ===============================    ``'-'``          实线(默认)    ``'--'``         长虚线    ``'-.'``         点划线    ``':'``          虚线    =============    ===============================


[size=16.639999389648438px]In [5]:

x1 = np.linspace(0.0, 5.0, 10)y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)fig = plt.figure()axes = fig.add_subplot(1, 1, 1)axes.plot(x1, y1, color='black', label='-', ls='-')  # 默认线性就是'-'axes.plot(x1, y1+0.5, color='green', label='--',ls='--')axes.plot(x1, y1+1, color='blue',  label='-.', linestyle='-.')axes.plot(x1, y1+1.5, color='red', label=':', ls=':')axes.legend()plt.show()










5 标记(形状)


参数marker可以在图形中添加标记,标记参数值和对应的标记类型如下所示:




    =============    ===============================    character        description    =============    ===============================    ``'.'``          点    ``','``          像素点    ``'o'``          圆    ``'v'``          向下三角形    ``'^'``          向上三角形    ``'<'``          向左三角形    ``'>'``          向右三角形    ``'1'``          向下T形    ``'2'``          向上T形    ``'3'``          向左T形    ``'4'``          向右T形    ``'s'``          正方形    ``'p'``          五边形    ``'*'``          星型    ``'h'``          六边形1    ``'H'``          六边形2    ``'+'``          十字形    ``'x'``          x 形    ``'D'``          大菱形    ``'d'``          小菱形    ``'|'``          竖线    ``'_'``          横线    =============    ===============================


[size=16.639999389648438px]In [6]:

x1 = np.linspace(0.0, 5.0, 10)y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)fig, axes = plt.subplots(1, 2, figsize=(10, 3), tight_layout=True)axes[0].plot(x1, y1, color='black', label='.', marker='.') axes[0].plot(x1, y1+0.5, color='green', label=',', marker=',')axes[0].plot(x1, y1+1, color='blue',  label='o', marker='|')axes[0].plot(x1, y1+1.5, color='red', label='v', marker='_')axes[0].legend()axes[1].scatter(x1, y1, color='black', label='.', marker='.') axes[1].scatter(x1, y1+0.5, color='green', label=',', marker=',')axes[1].scatter(x1, y1+1, color='blue',  label='o', marker='|')axes[1].scatter(x1, y1+1.5, color='red', label='v', marker='_')axes[1].legend()plt.show()









绘制折线图时,在传递了marker参数后,也可以通过以下参数进一步设置标记的样式:

  • markeredgecolor 或 mec : 边框颜色
  • markeredgewidth 或 mew : 边框粗细
  • markerfacecolor 或 mfc :填充色
  • markersize 或 ms :大小



[size=16.639999389648438px]In [7]:

x1 = np.linspace(0.0, 5.0, 10)y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)fig = plt.figure()axes = fig.add_subplot(1, 1, 1)axes.plot(x1, y1, color='blue', label='线1', marker='*',markersize=15, markerfacecolor='green',markeredgecolor='red', markeredgewidth=3) # 线1axes.plot(x1, y1+0.5, color='blue', label='线2', marker='*',markersize=15, markerfacecolor='green',markeredgecolor='red')   # 线2axes.plot(x1, y1+1, color='blue', label='线3', marker='*',markersize=5, markerfacecolor='red')   # 线3axes.plot(x1, y1+1.5, color='blue', label='线4',marker='*',markersize=10, markerfacecolor='red')   # 线4axes.legend()plt.show()









散点图修改点的样式时,参数与折线图有些许不同:

  • s : 大小
  • color 或 c : 填充色
  • alpha:透明度
  • linewidths:边框粗细
  • edgecolors:边框颜色



[size=16.639999389648438px]In [8]:

x1 = np.linspace(0.0, 5.0, 10)y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)fig = plt.figure()axes = fig.add_subplot(1, 1, 1)axes.scatter(x1, y1, color='green', label='第一组', marker='*',s=105,edgecolors='red', linewidths=5)axes.scatter(x1, y1+0.5, color='green', label='第二组', marker='*',s=15)axes.scatter(x1, y1+1, color='blue', label='第三组', marker='*',s=5)axes.scatter(x1, y1+1.5, color='blue', label='第四组',marker='*',s=10)axes.legend()plt.show()










6 显示坐标


显示坐标可以用添加text的方法实现:




[size=16.639999389648438px]In [9]:

x1 = [i*0.1 for i in range(0, 50, 5)]y1 = [i*i for i in x1]fig, axes = plt.subplots(1, 2, figsize=(10, 3), tight_layout=True)axes[0].plot(x1, y1, color='red', label='.', marker='.')  # 默认线性就是'-'axes[1].scatter(x1, y1, color='blue', label='.', marker='*')  # 默认线性就是'-'for a, b in zip(x1, y1):      axes[0].text(a, b, (a,b),ha='left', va='top', fontsize=10)     axes[1].text(a, b, (a,b),ha='left', va='top', fontsize=10)plt.show()












1 个回复

倒序浏览
以上文章转载自网络
有问题联系小优:DKA-2018
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马