Answer a question

I am trying to rotate my secondary y-label to 270 degrees, but when I do this passing the rotate=270 argument it overlaps my y-tick text. Any ideas how to fix this?

fig, ax = plt.subplots()

ax.plot(df.index,df.tripTime,label='Fishing Effort', marker='D')
ax2=ax.twinx()
ax2.plot(tr.index,tr.cost, 'g',label='Fuel Expenditure', marker='d')

lines = ax.get_lines() + ax2.get_lines()
ax.legend(lines,[line.get_label() for line in lines], loc='lower left')
ax.set_ylim((0, 18))

ax2.set_ylabel('Cost ($)',color='g', rotation=270)

for tl in ax2.get_yticklabels():
    tl.set_color('g')

ax.set_ylabel('Fishing Effort (hrs)')
ax.set_xlabel('Time (days)')
plt.show()

enter image description here

Answers

UPDATE: This answer isn't very good, please look at the comments!

This looks like a bug and you should probably report it to matplotlib's issue tracker.

While it is getting fixed, a quick solution is to set the label padding to a higher value:

ax2.set_ylabel('Cost ($)', color='g', rotation=270, labelpad=15)

Result

Moreover, negative labelpad values can be used to decrease the white-space as well.

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐