Answers:
另外,如果您想简单地设置刻度线的数量,同时允许matplotlib对其进行定位(目前仅使用MaxNLocator
),则有pyplot.locator_params
,
pyplot.locator_params(nbins=4)
您可以按照以下方法在此方法中指定特定的轴,默认为两者:
# To specify the number of ticks on both or any single axes
pyplot.locator_params(axis='y', nbins=6)
pyplot.locator_params(axis='x', nbins=10)
numticks
而不是nbins
numticks
@meduz指出的对数图解?
[0, 1, ..., 99]
而现在为set nticks=10
,那么新的稀疏标签将沿轴间隔十倍,即现在1
将位于原处9
,原2
处19
...和原9
处99
。
如果仍然有人在搜索结果中获得此页面:
fig, ax = plt.subplots()
plt.plot(...)
every_nth = 4
for n, label in enumerate(ax.xaxis.get_ticklabels()):
if n % every_nth != 0:
label.set_visible(False)
要解决刻度的自定义和外观问题,请参见matplotlib网站上的“刻度定位器”指南
ax.xaxis.set_major_locator(plt.MaxNLocator(3))
将x轴上的总刻度数设置为3,并将其均匀地分布在整个轴上。
还有一个很好的教程
ax = df.plot()
pandas.DataFrame
日期时间索引为[2019-01-01,... 2019-11-01] 的df(),请调用 ax = df.plot()
,返回一个Figure对象。通话ax.xaxis.set_major_locator(plt.MaxNLocator(3))
仅显示前3个索引[2019-01-01,2019-01-02,2019-01-03]。
df.plot()
通常显示minor_locator
,因此您可能需要尝试ax1.xaxis.set_minor_locator(plt.MaxNLocator(3))
。还请记住用代替3
要显示的刻度数。对于大熊猫时间序列,我推荐 import matplotlib.dates as mdates
并ax.xaxis.set_minor_locator(mdates.MonthLocator(interval = 1))
使用ax.xaxis.set_minor_formatter(mdates.DateFormatter('%m-%Y'))
set_ticks()
轴对象有一个功能。
get_xticks()
或get_yticks()
首先调用axis对象,根据需要进行编辑,然后将列表传递回set_ticks()
。
set_ticks()
,但是我有set_xticks()
和set_yticks()
。这些是轴对象而不是轴的属性。也许这在最近几年已经改变了。
万一有人仍然需要它,并且因为这里没有任何东西真正适合我,我想出了一种非常简单的方法,可以将生成的图的外观保持“原样”,同时将刻度数固定为N:
import numpy as np
import matplotlib.pyplot as plt
f, ax = plt.subplots()
ax.plot(range(100))
ymin, ymax = ax.get_ylim()
ax.set_yticks(np.round(np.linspace(ymin, ymax, N), 2))
ax.set_yticks(np.linspace(int(ymin), int(ymax), N), 2)
@raphael提供的解决方案很简单,也很有帮助。
不过,显示的刻度标签将不是从原始分布采样的值,而是从所返回的数组索引中采样的值np.linspace(ymin, ymax, N)
。
若要显示与原始刻度标签均匀隔开的N个值,请使用set_yticklabels()
方法。这是y轴的代码段,带有整数标签:
import numpy as np
import matplotlib.pyplot as plt
ax = plt.gca()
ymin, ymax = ax.get_ylim()
custom_ticks = np.linspace(ymin, ymax, N, dtype=int)
ax.set_yticks(custom_ticks)
ax.set_yticklabels(custom_ticks)
使用对数刻度时,可以使用以下命令固定主要刻度数
import matplotlib.pyplot as plt
....
plt.locator_params(numticks=12)
plt.show()
设置为的值numticks
确定要显示的轴刻度数。
@bgamari的帖子中介绍了该locator_params()
功能,但是使用对nticks
数刻度时,该参数会引发错误。
pyplot.locator_params(axis = 'x', nbins = 4)
(或axis = 'y'
)使该过程非常简单。谢谢@bgamari!