摘要这一篇文章来讲一下主次坐标的绘制。也是最近在一次绘图中用到了,在这里记录一下方便之后自己的查找。顺便在这里说一下最近自己在做什么吧,也是好久没有更新了。
文章目录(Table of Contents)
前言-说明
这一篇说一下绘制主次坐标的方式。这种图可以适用于当你有两组数组,两组数据的数量级相差较大(如果用同一个y轴进行绘制,数据较小的会看不出趋势),但是想要比较两组数据的趋势。这种时候使用主次坐标图是一个很好的选择。
主次坐标图绘制
在这里我就直接贴出代码,注释已经写好了,很容易能看懂。
importnumpyasnp
importpandasaspd
frommatplotlibimportpyplotasplt
frommatplotlib.linesimportLine2D
importseabornassns
%matplotlibinline
#----------
#生成样例数据
#----------
x=np.linspace(0,10,15)
y_data1=np.random.rand(15)
y_data2=5*y_data1+5*np.random.rand(15)
#-------
#进行绘图
#-------
sns.set()
#画出双坐标轴图像
fig,ax1=plt.subplots(figsize=(9,5),dpi=100)
ax2=ax1.twinx()
#这里获取图为了后面添加图例
l1,=ax1.plot(x,y_data1,'darkorange')
l2,=ax2.plot(x,y_data2,'royalblue')
#设置x,y轴文字说明
ax1.set_xlabel('date')
ax1.set_ylabel('Y1,drunken_conflict_rate')
ax2.set_ylabel('Y2,drunken_conflict_hurt_rate')
#设置图例
plt.legend(handles=[l1,l2,],labels=['data_1','data_2'],loc='best')
#设置标题
ax1.set_title('PrimaryandSecondaryCoordinates')
#-------
#绘制直线
#-------
#两条line的数据
line1=[(2,0),(2,1)]
line2=[(7,0),(7,1)]
(line1_xs,line1_ys)=zip(*line1)
(line2_xs,line2_ys)=zip(*line2)
#创建两条线,并添加
ax1.add_line(Line2D(line1_xs,line1_ys,linewidth=1,color='black'))
ax1.add_line(Line2D(line2_xs,line2_ys,linewidth=1,color='black'))
#显示图像
plt.show()
绘制出的图像如上所示,可以看到图的左右两边的y轴的刻度不一样,左边的范围是0-1,右边的范围是0-10.
主次坐标轴绘制图例
有的时候使用上面的方式是无法同时将主次坐标的图例画出来,这个时候可以使用下面的方式来进行绘制,也就是不要使用 plt.legend() 或是 ax.legend() 的方式绘制,而是直接使用 fig.legend() 来进行绘制:
fig.legend(fontsize=17,bbox_to_anchor=(0.83,0.87))
上面就是主次坐标轴的一些画法,下面随便讲讲吧。
结语
上一次写随笔还是-06-07小记,已经过去一个月了。这一个月的时间我也从本科毕业了。虽说现在还在学校上暑期学校,但是感觉变化还是挺大的,身边的人又是换了一批吧,分别的时候真的感觉时间好快呀,四年本科就结束了,但是四年间发生的事情还历历在目。
自己一直还没有整理毕业那段时间拍的照片,之后肯定会整理一下发出来的。下面这段话是今天在网易云听歌的时候看到的评论。最近在学校里走路,总会想起和前女友在一起的点滴吧。