matplotlib绘图优化–绘制多条曲线

王 茂南 2019年7月11日07:22:52
评论
2080字阅读6分56秒
摘要这一篇文章简单介绍一下使用matplotlib来绘制多条曲线在一幅图中,并且简单介绍了一下关于x, y轴标签的设置,设置ticks的名字,设置x轴的范围,设置图例的方式,设置图片的标题。

文章目录(Table of Contents)

简介

这一篇简单介绍一下使用matplotlib来绘制多条曲线。这个其实在Python数据处理之Matplotlib学习的里面就有所介绍.这里单独拿出来,更加详细的进行说明。

图像的绘制

数据介绍

下面是我们使用的数据的简单的介绍,我们将数据保存为pd.Dataframe的个数,下面我们想绘制6条曲线,如back中的9个数据绘制为一条曲线,我们想要在一张图片中展示出这6条曲线。

matplotlib绘图优化–绘制多条曲线

绘制方式

上面介绍完需要使用的数据,下面看一下绘图的部分。下面的每一部分都写好了注释。

  1. # 开始绘图
  2. fig, ax1 = plt.subplots()
  3. fig.set_size_inches(12, 6)
  4. plt.set_cmap('RdBu')
  5. # multiple line plot
  6. x = np.arange(featureValuedf.shape[1]) # x坐标的范围
  7. lw = 4 # 控制线条的粗细
  8. a, = ax1.plot(x, featureValuedf.loc['Back'].to_numpy(),linewidth=lw, label='Back', marker='o', markersize=12)
  9. b, = ax1.plot(x, featureValuedf.loc['Land'].to_numpy(), linewidth=lw, label='Land', marker='o', markersize=12)
  10. c, = ax1.plot(x, featureValuedf.loc['Neptune'].to_numpy(), linewidth=lw, label='Neptune', marker='o', markersize=12)
  11. d, = ax1.plot(x, featureValuedf.loc['Pod'].to_numpy(), linewidth=lw, label='Pod', marker='o', markersize=12)
  12. e, = ax1.plot(x, featureValuedf.loc['Smurf'].to_numpy(), linewidth=lw, label='Smurf', marker='o', markersize=12)
  13. f, = ax1.plot(x, featureValuedf.loc['Teardrop'].to_numpy(), linewidth=lw, label='Teardrop', marker='o', markersize=12)
  14. plt.legend(handles = [a,b,c,d,e,f])
  15. ax1.plot([x[0]-w, x[-1]+w], [0, 0], color='navy', lw=10, linestyle='-', alpha=0.3) # 这是y=0的直线(粗)
  16. ax1.plot([x[0]-w, x[-1]+w], [0, 0], color='navy', lw=1, linestyle='--', alpha=0.3) # 这是y=0的直线(细)
  17. # 设置坐标轴的标签
  18. ax1.yaxis.set_tick_params(labelsize=15) # 设置y轴的字体的大小
  19. ax1.set_xticks(x) # 设置xticks出现的位置
  20. # 创建xticks
  21. xticksName = []
  22. for i in range(len(binRange)-1):
  23.     # print(['{}<dst_host_srv_count<{}'.format(str(np.round(binRange[i],1)), str(np.round(binRange[i+1],1)))])
  24.     xticksName = xticksName + ['{}<x<{}'.format(str(np.round(binRange[i],1)), str(np.round(binRange[i+1],1)))]
  25. ax1.set_xticklabels(xticksName, fontsize = 'large') # 设置xticks的值
  26. # 设置x轴的范围
  27. ax1.set_xlim(x[0]-0.3*w, x[-1]+0.3*w) # 设置x轴的范围
  28. # 设置坐标轴名称
  29. ax1.set_ylabel("SHAP Value", fontsize='xx-large')
  30. ax1.set_xlabel("x={}".format(featureName), fontsize='xx-large')
  31. # 设置标题
  32. ax1.set_title('The SHAP Value of {} of Different Classifications'.format(featureName), fontsize='x-large')
  33. plt.show()

最终的效果如下图所示:

matplotlib绘图优化–绘制多条曲线

如果想要使得 xticklabels 有一些倾斜,我们可以使用 rotation 来控制他的倾斜度。

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2019年7月11日07:22:52
  • 转载请务必保留本文链接:https://mathpretty.com/10762.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: