How to rotate secondary y axis label so it doesn't overlap with y-ticks, matplotlib
·
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()

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)

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

所有评论(0)