文章目录(Table of Contents)
简介
这一篇简单介绍一下使用matplotlib来绘制多条曲线。这个其实在Python数据处理之Matplotlib学习的里面就有所介绍.这里单独拿出来,更加详细的进行说明。
图像的绘制
数据介绍
下面是我们使用的数据的简单的介绍,我们将数据保存为pd.Dataframe的个数,下面我们想绘制6条曲线,如back中的9个数据绘制为一条曲线,我们想要在一张图片中展示出这6条曲线。
绘制方式
上面介绍完需要使用的数据,下面看一下绘图的部分。下面的每一部分都写好了注释。
- # 开始绘图
- fig, ax1 = plt.subplots()
- fig.set_size_inches(12, 6)
- plt.set_cmap('RdBu')
- # multiple line plot
- x = np.arange(featureValuedf.shape[1]) # x坐标的范围
- lw = 4 # 控制线条的粗细
- a, = ax1.plot(x, featureValuedf.loc['Back'].to_numpy(),linewidth=lw, label='Back', marker='o', markersize=12)
- b, = ax1.plot(x, featureValuedf.loc['Land'].to_numpy(), linewidth=lw, label='Land', marker='o', markersize=12)
- c, = ax1.plot(x, featureValuedf.loc['Neptune'].to_numpy(), linewidth=lw, label='Neptune', marker='o', markersize=12)
- d, = ax1.plot(x, featureValuedf.loc['Pod'].to_numpy(), linewidth=lw, label='Pod', marker='o', markersize=12)
- e, = ax1.plot(x, featureValuedf.loc['Smurf'].to_numpy(), linewidth=lw, label='Smurf', marker='o', markersize=12)
- f, = ax1.plot(x, featureValuedf.loc['Teardrop'].to_numpy(), linewidth=lw, label='Teardrop', marker='o', markersize=12)
- plt.legend(handles = [a,b,c,d,e,f])
- ax1.plot([x[0]-w, x[-1]+w], [0, 0], color='navy', lw=10, linestyle='-', alpha=0.3) # 这是y=0的直线(粗)
- ax1.plot([x[0]-w, x[-1]+w], [0, 0], color='navy', lw=1, linestyle='--', alpha=0.3) # 这是y=0的直线(细)
- # 设置坐标轴的标签
- ax1.yaxis.set_tick_params(labelsize=15) # 设置y轴的字体的大小
- ax1.set_xticks(x) # 设置xticks出现的位置
- # 创建xticks
- xticksName = []
- for i in range(len(binRange)-1):
- # print(['{}<dst_host_srv_count<{}'.format(str(np.round(binRange[i],1)), str(np.round(binRange[i+1],1)))])
- xticksName = xticksName + ['{}<x<{}'.format(str(np.round(binRange[i],1)), str(np.round(binRange[i+1],1)))]
- ax1.set_xticklabels(xticksName, fontsize = 'large') # 设置xticks的值
- # 设置x轴的范围
- ax1.set_xlim(x[0]-0.3*w, x[-1]+0.3*w) # 设置x轴的范围
- # 设置坐标轴名称
- ax1.set_ylabel("SHAP Value", fontsize='xx-large')
- ax1.set_xlabel("x={}".format(featureName), fontsize='xx-large')
- # 设置标题
- ax1.set_title('The SHAP Value of {} of Different Classifications'.format(featureName), fontsize='x-large')
- plt.show()
最终的效果如下图所示:
如果想要使得 xticklabels 有一些倾斜,我们可以使用 rotation
来控制他的倾斜度。
- 微信公众号
- 关注微信公众号
- QQ群
- 我们的QQ群号
评论