我有一个这样的清单:
x = ['alice', 'bob', ...] # len(x) > 100
y = [23, 323, ...] # just some number
plt.plot(x, y)
plt.show()
Run Code Online (Sandbox Code Playgroud)
绘制时,它显示x列表的每个值。有没有一种方法可以只显示某些值,x[0], x[10], ...但数字仍然相同。
我在网上发现了什么,例如在matplotlib中更改x或y轴上的“刻度频率”?全部基于x轴的值int。当x轴的值为字符串时,我不确定该怎么做。
如您所见,即使我将x轴标签旋转90度,它仍然很拥挤,因此我仍然需要找到一种减少显示的x数量的方法。
Dav*_*idG 10
一种方法是减少 x 轴上的刻度数。您可以使用 设置刻度ax.set_xticks()。在这里,您可以x使用切片符号对列表进行切片,以在每第二个条目处设置一个刻度[::2]。然后ax.set_xticklabels()在设置刻度时使用相同的切片设置x 刻度标签。
例如:
x = ["Ant", "Bob", "Crab", "Donkey", "Elephant", "Fire", "Giant","Hello",
"Igloo", "Jump", "Kellogg","Llama", "More", "Night"]
y = np.random.randint(0,10,14)
fig, (ax1, ax2) = plt.subplots(1,2, figsize=(9,5))
ax1.plot(x,y)
ax1.set_title("Crowded x axis")
ax2.plot(x,y)
ax2.set_xticks(x[::2])
ax2.set_xticklabels(x[::2], rotation=45)
ax2.set_title("Every 2nd ticks on x axis")
plt.show()
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,您会提到减少显示的刻度数。有多种方法可以执行此操作,具体取决于您的绘图,例如:
代码示例:
import matplotlib.pyplot as plt
import numpy as np
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32]
y = [1, 4, 9, 6, 2, 4, 5, 6, 7, 2, 1,
4, 6, 5, 2, 3, 1, 4, 9, 6, 2, 4,
5, 6, 7, 2, 1, 4, 6, 5, 2, 3]
labels = ["Ant", "Bob", "Crab", "Donkey", "Elephant", "Fire", "Giant","Hello",
"Igloo", "Jump", "Bull","Even", "More", "Words", "other", "Bazboo",
"Ant", "Bob", "Crab", "Donkey", "Hippo", "Fire", "Giant","Hello",
"Igloo", "Hump", "Kellogg","Even", "More", "Words", "Piano", "Foobar"]
plt.xticks(x, labels[::2], rotation='vertical')
plt.locator_params(axis='x', nbins=len(x)/2)
plt.plot(x, y, 'g-', color='red')
plt.tight_layout(pad=4)
plt.subplots_adjust(bottom=0.15)
plt.show()
Run Code Online (Sandbox Code Playgroud)
使用plt.locator_params和您列表的长度可以将其分成两半,例如:
plt.xticks(x, labels[::2], rotation='vertical') # set divisor
plt.locator_params(axis='x', nbins=len(x)/2) # set divisor
Run Code Online (Sandbox Code Playgroud)
这将显示刻度线(x / 2)的一半,同时保持绘图一致。这将对字符串和整数有效,因为其长度(len)在x列表中有效。
plt.xticks(x, labels, rotation='vertical')
plt.locator_params(axis='x', nbins=len(x))
Run Code Online (Sandbox Code Playgroud)
如果要缩小间距,请不要使用除数或进行相应调整。
| 归档时间: |
|
| 查看次数: |
4457 次 |
| 最近记录: |