Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib将记号与比例末端对齐_Python_Python 2.7_Matplotlib - Fatal编程技术网

Python matplotlib将记号与比例末端对齐

Python matplotlib将记号与比例末端对齐,python,python-2.7,matplotlib,Python,Python 2.7,Matplotlib,如果我在matplotlib中打印某个内容,它会自行选择y轴上的间距(在此处放置记号)。如何告诉轴始终以完整刻度结束,而不是在两个刻度之间 如果它选择每0.5打勾一次,则末端为2.0,且不高于2.0,且无打勾 import matplotlib.pyplot as plt X = [1,2,3,4,5] y = [0.1,0.3,2.4,3.9,3.2] plt.plot(X, y) plt.show() 较新版本的matplotlib现在默认为绘图添加边距。您可以通过调用plt.marg

如果我在matplotlib中打印某个内容,它会自行选择y轴上的间距(在此处放置记号)。如何告诉轴始终以完整刻度结束,而不是在两个刻度之间

如果它选择每0.5打勾一次,则末端为2.0,且不高于2.0,且无打勾

import matplotlib.pyplot as plt

X = [1,2,3,4,5]
y = [0.1,0.3,2.4,3.9,3.2]

plt.plot(X, y)
plt.show()

较新版本的matplotlib现在默认为绘图添加边距。您可以通过调用
plt.margins(0,0)
来删除它们:

但是,这会自动生成轴限制。在上面的示例中,这将不包括0或4(因为数据不包括0或4)。因此,您可以自己设置轴限制:

plt.ylim(0, 4)

如果要将限制限制限制在某个范围内,只需使用
plt.xlim
plt.ylim
。以下是一个例子:

import matplotlib.pyplot as plt
import numpy as np

X = [1,2,3,4,5]
# y = [0.1,0.3,2.4,3.9,3.2]
y = [0.1,0.2,0.3,0.5,1.1]

plt.plot(X, y)
plt.xlim(min(X), max(X))
ticks = [tick for tick in ax.get_yticks()]
plt.ylim(ticks[0], ticks[-1])
# plt.ylim(np.floor(min(y)), np.ceil(max(y))) # If you want only integer upper and lower limits
编辑:这解决了您对以下一组值的担忧
X=[1,2,3,4,5]
y=[0.1,0.2,0.3,0.5,1.1]


默认情况下,您将自动缩放轴,以扩展数据范围的某个百分比

因此,刻度位置和轴限制完全不相关。这主要为图表内容提供了一个良好的视觉外观

但是,您可以决定激活整数自动限制模式

plt.rcParams['axes.autolimit_mode'] = 'round_numbers'
要使限制和刻度相互关联,请执行以下操作:

这里,在打印的数据周围创建了大量空白。您可以决定将边距设置为
0
,以避免出现这种情况

plt.rcParams['axes.autolimit_mode'] = 'round_numbers'
plt.rcParams['axes.xmargin'] = 0
plt.rcParams['axes.ymargin'] = 0

请注意,此模式通常会扩展到下一个“nice number”,这可能是所需的,也可能不是所需的。例如,如果让第一个x值略小于1,
x=[0.99,2,3,4,5]
限制将扩展到0.5


matplotlib页面上还有一个标签。

如果我希望matplotlib以4.0结尾,则可以手动编辑略高于4.0的标签matplotlib作为顶部。但我不想将其设置为4.0,但它应该由matplotlib计算值是多少。我想要4.0,但不是它上面的空间。好的,然后只需添加
plt.ylim(min(y),4)
是,但我不想知道4,所以我可以对每幅图片使用它。在这种情况下,使用
plt.ylim(min(y),np.ceil(max(y)))
当matplotlib得出的间距不是整数时是什么?如果我使用边距=0,0。为什么他要删除顶部标签?@user3613886,因为matplotlib将自动生成限制。如果你知道你想要什么限制,你可以自己设定。我已经编辑了我的答案,并给出了一些解释。我如何使用matplotlib得出的间距,并使用它自动设置为0和4,而不明确使用我知道它是4和0?请参阅编辑Bazingaa的答案,将限制设置为最接近的整数
plt.rcParams['axes.autolimit_mode'] = 'round_numbers'
plt.rcParams['axes.xmargin'] = 0
plt.rcParams['axes.ymargin'] = 0