我一直在互联网上看很长一段时间但却无法弄清楚如何制作它。我需要绘制几个数字,其xticks定义为numpy.arange(1,N),N对于每个数字都不同。我希望xticks之间的间距在所有数字(例如1厘米)上是相同的,也就是说,每个数字的宽度必须取决于numpy.arange(1,N)的大小。知道如何做到这一点吗?
答案 0 :(得分:2)
我认为你可以通过仔细控制你的轴尺寸(作为图的一小部分),ax.set_xlim
和fig.set_size_inches
(doc)来设置实际尺寸。这个数字。
离
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.set_xlim([0,N])
fig.set_size_inches([N/2.54,h])
答案 1 :(得分:0)
为了扩展@ tcaswell的答案,当我想微观管理轴的实际尺寸和间距的刻度时,我就是这样做的。
import numpy as np
import matplotlib.pyplot as plt
plt.close('all')
#------------------------------------------------------ define xticks setup ----
xticks_pos = np.arange(11) # xticks relative position in xaxis
N = np.max(xticks_pos) - np.min(xticks_pos) # numbers of space between ticks
dx = 1 / 2.54 # fixed space between xticks in inches
xaxis_length = N * dx
#------------------------------------------------------------ create figure ----
#---- define margins size in inches ----
left_margin = 0.5
right_margin = 0.2
bottom_margin = 0.5
top_margin = 0.25
#--- calculate total figure size in inches ----
fwidth = left_margin + right_margin + xaxis_length
fheight = 3
fig = plt.figure(figsize=(fwidth, fheight))
fig.patch.set_facecolor('white')
#---------------------------------------------------------------- create axe----
#---- axes relative size ----
axw = 1 - (left_margin + right_margin) / fwidth
axh = 1 - (bottom_margin + top_margin) / fheight
x0 = left_margin / fwidth
y0 = bottom_margin / fheight
ax0 = fig.add_axes([x0, y0, axw, axh], frameon=True)
#---------------------------------------------------------------- set xticks----
ax0.set_xticks(xticks_pos)
plt.show(block=False)
fig.savefig('axis_ticks_cm.png')
这导致数字为11.8厘米,x轴为10厘米,每个刻度之间有1厘米的空间: