Python Matplotlib Xtick重叠
我需要在每个勾号之间添加间距,这样它就不会重叠。用于计算x记号的当前代码为Python Matplotlib Xtick重叠,python,numpy,matplotlib,plot,Python,Numpy,Matplotlib,Plot,我需要在每个勾号之间添加间距,这样它就不会重叠。用于计算x记号的当前代码为 x = np.arange(-10, 361, 10, dtype = int) plt.xticks(x) 但它产生的情节是 我还尝试使用以下代码添加空间: x = np.arange(-10, 361, 10, dtype = int) plt.xticks(x,['%i '%w for w in x]) 但这只会在第一个标签(-10)周围增加间距,之后不会增加任何间距。 我不想减少字体大小,希望有另一种选
x = np.arange(-10, 361, 10, dtype = int)
plt.xticks(x)
但它产生的情节是
我还尝试使用以下代码添加空间:
x = np.arange(-10, 361, 10, dtype = int)
plt.xticks(x,['%i '%w for w in x])
但这只会在第一个标签(-10)周围增加间距,之后不会增加任何间距。
我不想减少字体大小,希望有另一种选择来避免重叠 一个选项是只标记每N个记号。您可以使用主刻度和次刻度的组合来完成此操作:
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(-10, 361, 10, dtype = int)
y = np.sin(np.deg2rad(2*x))
fig, ax = plt.subplots(1, 1)
ax.plot(x, y)
ax.set_xticks(x, minor=True) # set minor ticks for each x value
ax.grid(which='both', axis='both') # show grid lines
plt.show()
更新: @tcaswell在评论中正确地指出,使用其中一个标记将比直接设置标记的位置更干净。例如:
ax.xaxis.set_minor_locator(plt.MultipleLocator(10))
请注意,无论您如何平移或缩放绘图轴,这将自动在整个x轴上放置记号。那么,您在寻找什么样的“其他替代方案”?在我看来,您有三个主要选项:1)增大图形的大小,2)减小记号标签的大小,3)减少记号的数量。就我个人而言,我会选择3号。我认为第四个选项是旋转标签,但当标签本身是长字符串时,这通常更有用。如果这些选择都不适合你,那么你可能是在要求不可能的事情。我明白了。嗯,把这个数字调大一点怎么样?我将把这些图存储为图像。有这么多刻度的原因是,只要看一看绘图,就可以获得相当准确的角度和功率,而不必看数据文件本身。如果这是您的目标,那么您真的需要标记所有刻度吗?在小刻度上加上记号和/或网格线怎么样?我明白了。。是的,听起来是个好主意。因为我只是一个初学者,我不知道该怎么做。让我看看怎么做,然后再联系你。谢谢你的建议。是否有必要创建一个子图和图形。我试图直接创建plt.xticks(x,minor=True),但它说minor不是有效的属性。我使用plt.minorticks_on()并将x的范围更改为x=np.arange(0361,50,dtype=int)。。。。非常感谢您的帮助。
plt.minorticks_on()
在这种情况下可以工作,但是如果您不喜欢默认设置,它不会提供任何方法来更改小刻度的位置。另一个选项是使用plt.gca()
抓取当前轴对象,例如plt.gca().set_xticks(…)
。就我个人而言,我建议使用面向对象的接口,而不是尝试使用'plt.
'函数调用来完成所有事情-它提供了更多的控制,也使您的代码更具可读性。这很有意义。您能指出一些关于matplotlib的oops的阅读材料吗?我会避免使用直接设置图标
。使用定位器类要好得多。