【发布时间】:2017-11-06 00:38:26
【问题描述】:
在选择轴上的自动限制时,我遇到了 matplotlib 2.x 代码无法重现 1.x 行为的问题。根据 https://matplotlib.org/users/dflt_style_changes.html ,版本 1.x 轴舍入应通过使用以下命令进行复制:
mpl.rcParams['axes.autolimit_mode'] = 'round_numbers'
mpl.rcParams['axes.xmargin'] = 0
mpl.rcParams['axes.ymargin'] = 0
但事实并非如此。请参阅下面的代码。我的 y 值范围从略高于 5 到略低于 50。当我运行代码时:
- 对于经典(1.x 版)行为 (sys.argv[1]=="1"),y 轴刻度为 5 和 50。
- 对于版本 2.x 行为 (sys.argv[1]=="2"),y 轴刻度为 0 和 60。
2.x 版的舍入似乎更粗糙。如何重现版本 1.x 舍入?
import sys
import matplotlib.pyplot as plt
import matplotlib as mpl
if sys.argv[1]=="1":
import matplotlib.style
matplotlib.style.use('classic')
elif sys.argv[1]=="2":
mpl.rcParams['axes.autolimit_mode'] = 'round_numbers'
mpl.rcParams['axes.xmargin'] = 0
mpl.rcParams['axes.ymargin'] = 0
else:
raise Exception("param must be 1 or 2")
z = [49.0, 14.5, 6.0, 5.8]
steps = len(z)
plt.clf()
plt.figure(figsize=(8,6)) # Matplotlib 1.x default
plt.subplot(311)
plt.plot(range(steps), z)
plt.xlim(xmin=0, xmax=steps-1)
plt.xticks(range(steps))
ymin, ymax = plt.ylim()
plt.yticks([ymin, ymax])
plt.savefig("mpltest%s.pdf" % sys.argv[1])
【问题讨论】:
-
python 2.7.14,matplotlib 2.1.0
-
我无法在 Python 2.7.2、matplotlib 2.1.0 上重现此行为
标签: python matplotlib axis-labels