我正在使用matplotlib生成图表,我使用set_ticks和set_ticklabels标记x轴上的几个重要值.但是这些标签中的一些太靠近并且重叠.但我不知道如何在不移动刻度的情况下移动这些标签.
这是一个例子:

我尝试了几个技巧但失败了,我还没有在互联网上找到这个问题的答案.任何帮助,谢谢.
源代码:
fig = mpl.figure( figsize=(3, 3) ) # force figsize here to reproduce the problem.
ax = fig.add_subplot(1, 1, 1, frameon=False)
ax.set_xlim(-0.015, 1.515)
ax.set_ylim(-0.01, 1.01)
ax.set_xticks([0, 0.3, 0.4, 1.0, 1.5])
ax.grid(True)
mpl.show()
Run Code Online (Sandbox Code Playgroud)
结果如下:

我尝试了几个技巧,最好的一个是:
fig = mpl.figure( figsize=(3, 3) )
ax = fig.add_subplot(1, 1, 1, frameon=False)
ax.set_xlim(-0.015, 1.515)
ax.set_ylim(-0.01, 1.01)
ax.set_xticks([0, 0.3, 0.4, 1.0, 1.5])
ax.set_xticklabels([0.0, "", "", 1.0, 1.5])
ax.set_xticks([0.35], minor=True)
ax.set_xticklabels(["0.3 0.4"], minor=True)
ax.grid(True)
mpl.show()
Run Code Online (Sandbox Code Playgroud)

但是在x = 0.35处有一个小问题,我不知道如何删除它.
好的,我找到了自己删除小蜱的方法:
for line in ax.xaxis.get_minorticklines():
line.set_visible(False)
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我们可以利用次要刻度将刻度标签放在我们想要的任何地方.
感谢所有的热心人士!
use*_*203 10
对于寻找原始问题答案的人:可以选择更改tick_label的对齐方式.
在matplotlib网页上的示例中对此进行了详细说明.基本上在上面的情况下,人们会使用
ax.get_xaxis().majorTicks[1].label1.set_horizontalalignment('right')
ax.get_xaxis().majorTicks[2].label1.set_horizontalalignment('left')
Run Code Online (Sandbox Code Playgroud)
将标签彼此移开
从你的评论"..标出x轴上的几个重要值"我认为你不应该改变xticks和标签,而是添加带有适当注释的垂直线.
这意味着您的数据保持规则并且允许您着色重要点的网格,您也可以相当容易地添加数值.
例
import pylab as py
# Plot a sinc function
delta=2.0
x=py.linspace(-10,10,100)
y=py.sinc(x-delta)
# Mark delta
py.axvline(delta,ls="--",color="r")
py.annotate(r"$\delta$",xy=(delta+0.2,-0.2),color="r",size=15)
py.plot(x,y)
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
10445 次 |
| 最近记录: |