在具有双y轴的Matplotlib图中,在条形图前排列线

时间:2015-06-11 01:57:28

标签: python matplotlib plot

我想绘制一个带有两个y轴的图形,我希望左边的y轴显示一条线,根据该线对x轴进行排序,右边的y轴显示条形。我的问题是次y轴隐藏了第一个y轴,如附图所示。我使用的代码如下:

import matplotlib
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter

fig, ax1 = plt.subplots()    
ax2 = ax1.twinx()
p1 = ax1.plot(ind, total_facilities, '--bo')
width = 1
p2 = ax2.bar(ind, pdb_facilities, width, color='gray',edgecolor = "none")
plt.xlim([-1,len(total_facilities)])
ax1.set_yscale('symlog')

当我重新排列轴时,我绘制了辅助轴上的蓝线,这条线在灰色条的前面,但后来却让人困惑,因为我希望根据主要的值对x轴进行排序y轴。有没有办法将蓝线放在前面,同时保持在主y轴上?

enter image description here

1 个答案:

答案 0 :(得分:2)

我发现我可以切换辅助y轴的位置,因此辅助y轴绘制在左侧,主要设置在右侧:

ax2 = ax1.twinx()
p1 = ax2.plot(ind, total_facilities, '--bo')
p2 = ax1.bar(ind, pdb_facilities, width, color='gray',edgecolor = "none")
plt.xlim([-1,len(total_facilities)])
ax2.set_yscale('symlog')
ax1.yaxis.tick_right()
ax2.yaxis.tick_left()
plt.show()