我有一个有2个y轴的图,每个对应一组线。实线对应于左侧的y轴,而虚线对应于右侧的y轴。我也有一个图例,我希望它只使用实线作为键,因为虚线具有相同的标签,具体取决于它们的颜色。
问题是当我为实线绘制图例,然后是虚线代码时,网格线显示的是图例。我需要为两个轴指定网格线,因为它们不会以其他方式显示,并且如果将图例移动到虚线,则会将虚线用作关键点。我也不想改变我的绘图顺序。
代码和情节
#Plot
x= np.arange(0,3)
fig,ax = plt.subplots(figsize=(6,6))
#DOD
dod1 = ax.plot(x, ctrl_dod, color='r', label='CTRL' )
dod2 = ax.plot(x, mfkc_dod, color='#e68a00', label='MFKC' )
dod3 = ax.plot(x, gses_dod, color='green', label='GSES' )
dod4 = ax.plot(x, gses3_dod, color='blue', label='GSES-3')
dod5 = ax.plot(x, gses4_dod, color='purple', label='GSES-4')
dod6 = ax.plot(x, mera_dod, color='brown', label='MERRA2')
ax.xaxis.grid(True)
ax.set_ylim([0.02,0.044])
ax.set_yticks(np.arange(0.02,0.045,0.004))
ax.set_xlabel('Month')
ax.set_ylabel('Dust Optical Depth (550 nm)')
ax.set_title('Global Mean DOD and DCM')
legend = ax.legend()
legend.get_frame().set_facecolor('white')
#DCM
ax2 = ax.twinx()
dcm1 = ax2.plot(x, ctrl_dcm*1e6, color='r', linestyle='--', label='CTRL' )
dcm2 = ax2.plot(x, mfkc_dcm*1e6, color='#e68a00', linestyle='--', label='MFKC' )
dcm3 = ax2.plot(x, gses_dcm*1e6, color='green', linestyle='--', label='GSES' )
dcm4 = ax2.plot(x, gses3_dcm*1e6, color='blue', linestyle='--', label='GSES-3')
dcm5 = ax2.plot(x, gses4_dcm*1e6, color='purple', linestyle='--', label='GSES-4')
dcm6 = ax2.plot(x, mera_dcm*1e6, color='brown', linestyle='--', label='MERRA2')
ax2.xaxis.grid(True)
ax2.yaxis.grid(True)
ax2.set_xlabel('Month')
ax2.set_ylabel('Dust Column Mass (mg m-2)')
#Limits
axes = plt.gca()
axes.set_xlim([-0.25,2.25])
#Labels
axes.set_xticks(x)
axes.set_xticklabels(['June','July','August'])
#Save
pylab.savefig('dod+dcm.png')
问题
我怎样才能
一)有传说键用实线和
b)有传说不透明白色的背景吗?
“有图例按键使用实线” - 图像中的图例按键已经是实线,对吗? –
我不明白“我需要为这两个轴指定网格线,因为它们不会显示出来”。只使用ax.grid()而不显示ax2的网格应直接解决问题。如果没有,我们需要问题的[mcve]。 – ImportanceOfBeingErnest
重要性 - 好吧,实际上这个特定的例子适用于轴匹配。但是,昨天我的左右轴有不同的网格线,这就是为什么我需要为ax和ax2设置yaxis.grid(True)的原因。如果网格不匹配,那么对其他人也可能有帮助。 – ChristineB