我正在绘制一个图,其中y轴上的数字可能变化很大,需要一种方法来通过编程来确定一个好的绘图宽度,使它们适合。我目前正在使用以下可怕的黑客,但它不是很强大。例如,如果ymin
和{ymin
和ymax
?在
ymin, ymax = 1, 1e8
nd = max(len(str(ymin)), # number of digits (at most) in y-axis numbers
len(str(ymax)))
wN = .05 + .01*nd # width of the numbers on the y-axis ticks (ymin to ymax)
plt.axes([wN, .06, 1-wN-.01, 1-.12]) # [left, bottom, width, height]
plt.ylabel("the y-axis label")
yticker = matplotlib.ticker.ScalarFormatter()
yticker.set_scientific(False)
plt.gca().yaxis.set_major_formatter(yticker)
plt.axis([0, 9, ymin, ymax])
要获取刻度值,请使用
这将显示绘图中的值。例如,您可以手动更改它们
^{pr2}$将在
ymin
和ymax
之间给你10个等距的刻度。在有一种方法可以手动设置标签。例如,您可能需要以下记号值
显示为
[0.0, .33, 0.67, 1.0]
,这可以通过使用round
函数设置刻度标签来实现。参数2
表示四舍五入到两位数:然后使用设置记号标签
实际的y轴将缩放以匹配
tick_vals
设置的值,但它们将根据tick_labels
重新标记。在本例中,您负责确保记号标签实际上表示轴上的内容。在注:我用过
在这个答案里。在
从matplotlib 1.1开始有一个
它可以自动调整宽度。它允许指定填充:请参见the docs。在
但有时需要手动调整边距:例如,当您将图例放在轴之外时。在这种情况下,你可以打电话
^{pr2}$但是请注意,这两个命令都必须在
savefig
或show
之前调用。在相关问题 更多 >
编程相关推荐