Python 设置x轴刻度的格式

Python 设置x轴刻度的格式,python,matplotlib,Python,Matplotlib,我有以下生成表面密度图的代码。 x和y表示位置坐标,z轴表示密度。所有值都是预先计算的,并存储在numpy数组中 #set up the grid xi, yi = np.linspace(x.min(), x.max(), 200), np.linspace(y.min(), y.max(), 200) xi, yi = np.meshgrid(xi, yi) #interpolate rbf = scipy.interpolate.Rbf(x, y, z, function='lin

我有以下生成表面密度图的代码。 x和y表示位置坐标,z轴表示密度。所有值都是预先计算的,并存储在numpy数组中

    #set up the grid
xi, yi = np.linspace(x.min(), x.max(), 200), np.linspace(y.min(), y.max(), 200)
xi, yi = np.meshgrid(xi, yi)
#interpolate
rbf = scipy.interpolate.Rbf(x, y, z, function='linear')
zi = rbf(xi, yi)

plt.imshow(zi, vmin=z.min(), vmax=z.max(), origin='lower', extent=[x.min(), x.max(), y.min(), y.max()])
plt.scatter(x, y, c=z,marker='o')
plt.colorbar()
plt.scatter(xo,yo, c='b', marker='*')

plt.xlabel("RA(degrees)")
plt.ylabel("DEC(degrees)")
plt.title('Surface Density Plot 2.0 < z < 2.2')
plt.savefig('2.0-2.2.png', dpi= 300 )

plt.show()
#设置网格
席,Yi=NP.LimStudio(x.min(),x.Max(),200),nP.林空间(y.min()),y.Max(),200)
席席,彝=NP
#插入
rbf=scipy.interpolate.rbf(x,y,z,function='linear')
zi=rbf(xi,yi)
plt.imshow(zi,vmin=z.min(),vmax=z.max(),origin='lower',extent=[x.min(),x.max(),y.min(),y.max())
plt.散射(x,y,c=z,marker='o')
plt.colorbar()
plt.scatter(xo,yo,c='b',marker='*')
plt.xlabel(“RA(度)”)
plt.ylabel(“十二月(度)”)
plt.title(‘表面密度图2.0
我遇到的问题是,xaxis记号不是用户友好的术语,它们的值介于150-152之间,但我似乎无法使用xticks()函数更改记号的位置。 谁能给我一个关于如何格式化x轴的建议吗

编辑- 这些是用于绘图的xyz值。x、 y,z是三个numpy数组-
第一行是x值,第二行是y值,第三行是z值

使用pyplot接口时,可以通过设置xticks(前提是将matplotlib.pyplot导入为plt)

您可以将记号位置指定为列表或numpy数组,并将记号标签指定为touple(或列表…)

但是,请提供一个我们可以运行的代码的最小示例,这样我们就可以测试它是否工作,看看为什么不工作,如果是这样的话。另外,您似乎已经将matplotlib作为plt导入,但是您的一些命令(如
xlabel
)缺少
plt部分。这只是打字错误还是复制/粘贴错误

<>如果你想对你的滴答声和滴答声进行更多的微调,你应该考虑使用MatPultLIB的OO接口。是的,它更详细,你必须输入更多的字母,但在我看来,代码变得更清晰,你有更多的可能性使图表适应你的期望

编辑:据我从您的评论中了解,您对xtick标签的格式不满意。因此,您可能希望使用“150.0”左右,而不是“0.0”+1.5e2。要查看的功能(使用pyplot接口)是:

这里显示了KWARG。如果
style='plain'
符合您的要求,您应该尝试一下

我想再次强调,OO接口为您提供了更大的通用性,可以更改记号标签的格式。各自的职能将是:

matplotlib.axes.yaxis.set_major_formatter()
matplotlib.axes.xaxis.set_major_formatter()

您可以在几个格式化程序之间进行选择,甚至可以编写自己的格式化函数。如果您想这样做,我可以给您进一步的建议。

在使用pyplot接口时,您可以通过设置XTICK(前提是您将matplotlib.pyplot导入为plt)

您可以将记号位置指定为列表或numpy数组,并将记号标签指定为touple(或列表…)

但是,请提供一个我们可以运行的代码的最小示例,这样我们就可以测试它是否工作,看看为什么不工作,如果是这样的话。另外,您似乎已经将matplotlib作为plt导入,但是您的一些命令(如
xlabel
)缺少
plt部分。这只是打字错误还是复制/粘贴错误

<>如果你想对你的滴答声和滴答声进行更多的微调,你应该考虑使用MatPultLIB的OO接口。是的,它更详细,你必须输入更多的字母,但在我看来,代码变得更清晰,你有更多的可能性使图表适应你的期望

编辑:据我从您的评论中了解,您对xtick标签的格式不满意。因此,您可能希望使用“150.0”左右,而不是“0.0”+1.5e2。要查看的功能(使用pyplot接口)是:

这里显示了KWARG。如果
style='plain'
符合您的要求,您应该尝试一下

我想再次强调,OO接口为您提供了更大的通用性,可以更改记号标签的格式。各自的职能将是:

matplotlib.axes.yaxis.set_major_formatter()
matplotlib.axes.xaxis.set_major_formatter()
您可以在几个格式化程序之间进行选择,甚至可以编写自己的格式化函数。如果你想这样做,我可以给你进一步的建议。

萤火虫,根据你在评论中给出的建议,我相信下面描述了你的问题。x数据的大小比变量大得多,因此python有一个值列表,如

[150.05,150.10,150.15,150.20,150.25] 
这对于图中的xaxis来说太大了,所以python做了一些你不喜欢的聪明的事情(我同意)

一种修复方法是简单地将xticks设置为垂直,例如

py.xticks(rotation='vertical')
如果无法手动执行python尝试的操作,请从x轴减去150度,并更改xlabel,以便

plt.xlabel("RA+150(degrees)")
如果您的数据不是度,我建议改为重新缩放(例如除以1e2),但对于度,这看起来很奇怪。

Firefly,根据您在评论中给出的结果,我相信下面描述了您的问题。x数据的大小比变量大得多,因此python有一个值列表,如

[150.05,150.10,150.15,150.20,150.25] 
这对于图中的xaxis来说太大了,所以python做了一些你不喜欢的聪明的事情(我同意)

一种修复方法是简单地将xticks设置为垂直,例如

py.xticks(rotation='vertical')
如果无法手动执行python尝试的操作,请从x轴减去150度,并更改xlabel,以便

plt.xlabel("RA+150(degrees)")

如果您的数据不是度,我建议改为重新缩放(例如除以1e2),但对于度,这看起来非常奇怪。

使用xticks是手动设置x轴刻度的正确方法。通常采用
plt.xticks(plt.arange(150152,0.5))
的形式是合适的。
xticks
的参数是这里的关键,你能给出你尝试使用的代码吗?@user2145647谢谢,但我遇到的问题是plt.xtic的滴答声发生了变化