我试图在任一轴上绘制一个没有刻度线或数字的图形(我使用传统意义上的轴,而不是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()
Run Code Online (Sandbox Code Playgroud)
我想知道的三件事是:
如何首先关闭这种行为(虽然在大多数情况下它是有用的,但并不总是!)我已经查看了matplotlib.axis.XAxis,找不到任何合适的东西
怎么能让N消失(即X.set_visible(False))
还有更好的方法来完成上述任务吗?我的最终情节将是图中的4x4子图,如果这是相关的.
我知道这是一个“重复”问题(删除x轴刻度,同时保留网格(matplotlib)),但是我发现的答案无法解决我的问题。
例如,我有以下代码:
%matplotlib inline
from matplotlib import pyplot as plt
from matplotlib.lines import Line2D
import bumpy
data = numpy.random.randint(0, 100, size=(100,100))
plt.style.use('ggplot')
plt.figure(figsize=(10,10))
plt.imshow(data)
plt.savefig('myplot.pdf', format='pdf', bbox_inches='tight')
plt.close()
Run Code Online (Sandbox Code Playgroud)
产生此图:
但是,我想得出一个没有任何刻度的图,只是网格。然后,我尝试了这个:
plt.figure(figsize=(10,10))
plt.imshow(data)
plt.grid(True)
plt.xticks([])
plt.yticks([])
Run Code Online (Sandbox Code Playgroud)
Wich删除所有刻度线和网格:
最后,如果尝试这样做:
plt.figure(figsize=(10,10))
plt.imshow(data)
ax = plt.gca()
ax.grid(True)
ax.set_xticklabels([])
ax.set_yticklabels([])
Run Code Online (Sandbox Code Playgroud)
我走近了,但我的.pdf情节外仍然有一些滴答声。我如何摆脱它们,保持内部网格?
如果我运行这段代码
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.xaxis.set_tick_params(length=0,labelsize=0)
ax.grid(True)
Run Code Online (Sandbox Code Playgroud)
我得到以下信息:
xaxis 刻度线和标签未显示(如预期),但绘图底部出现一些破折号(前三个破折号我用红色圈出)。
我怎样才能删除它们?我查看了网格的文档,但找不到任何内容。
一个告诉我如何通过查看文档来弄清楚如何做到这一点的答案将特别有用。