我试图在任一轴上绘制一个没有刻度线或数字的图形(我使用传统意义上的轴,而不是matplotlib命名法!) . 我遇到的一个问题是matplotlib通过减去值N来调整x(y)ticklabels,然后在轴的末尾添加N.
这可能很模糊,但下面的简化示例突出了这个问题,'6.18'是N的违规值:
import matplotlib.pyplot as plt
import random
prefix = 6.18
rx = [prefix+(0.001*random.random()) for i in arange(100)]
ry = [prefix+(0.001*random.random()) for i in arange(100)]
plt.plot(rx,ry,'ko')
frame1 = plt.gca()
for xlabel_i in frame1.axes.get_xticklabels():
xlabel_i.set_visible(False)
xlabel_i.set_fontsize(0.0)
for xlabel_i in frame1.axes.get_yticklabels():
xlabel_i.set_fontsize(0.0)
xlabel_i.set_visible(False)
for tick in frame1.axes.get_xticklines():
tick.set_visible(False)
for tick in frame1.axes.get_yticklines():
tick.set_visible(False)
plt.show()
我想知道的三件事是:
-
如何首先关闭此行为(虽然在大多数情况下它很有用,但并不总是!)我已查看
matplotlib.axis.XAxis
并找不到任何合适的内容 -
如何让N消失(即
X.set_visible(False)
) -
有没有更好的方法来做到这一点?如果相关,我的最终情节将是图中的4x4子图 .
6 回答
如果要隐藏仅保留网格线的轴文本:
执行
set_visible(False)
或set_ticks([])
也会隐藏网格线 .一个技巧可能是将刻度标签的颜色设置为白色以隐藏它!
您可以隐藏整个轴,而不是隐藏每个元素:
或者,您可以将刻度设置为空列表:
在第二个选项中,您仍然可以使用
plt.xlabel()
和plt.ylabel()
为轴添加标签 .如果你像我一样并且不总是检索轴,
ax
,当绘制图形时,那么一个简单的解决方案就是做我实际上无法基于此处的任何代码片段(甚至是答案中接受的代码片段)渲染没有边框或轴数据的图像 . 在深入研究了一些API文档后,我着手使用此代码来渲染我的图像
我使用tick_params调用基本上关闭了可能呈现的任何额外信息,我在输出文件中有一个完美的图形:) . 希望这可以帮助!
有些旧线程但是,这似乎是使用最新版matplotlib的更快的方法:
设置x轴的主要格式化程序