Matplotlib 如何在轴的末端显示最小值和最大值

Matplotlib 如何在轴的末端显示最小值和最大值,matplotlib,axes,Matplotlib,Axes,我生成如下图: from pylab import * import numpy as np import matplotlib.pyplot as plt import matplotlib.ticker import matplotlib.ticker as ticker rcParams['axes.linewidth'] = 2 # set the value globally rcParams['font.size'

我生成如下图:

from   pylab              import *
import numpy              as np
import matplotlib.pyplot  as plt
import matplotlib.ticker
import matplotlib.ticker as ticker

rcParams['axes.linewidth']   = 2 # set the value    globally
rcParams['font.size']        = 16# set the value globally
rcParams['font.family']      = ['DejaVu Sans']
rcParams['mathtext.fontset'] = 'stix'
rcParams['legend.fontsize']  = 24
rcParams['axes.prop_cycle']  = cycler(color=['grey','b','g','r','orange']) 
rc('lines', linewidth=2, linestyle='-',marker='o')
rcParams['axes.xmargin'] = 0
rcParams['axes.ymargin'] = 0

t = arange(0,21,1) 
v = 2.0
s = v*t

plt.figure(figsize=(12, 4))
plt.plot(t,s,label='$s=%1.1f\cdot t$'%v)
plt.title('Wykres drogi w czasie $s=v\cdot t$')
plt.xlabel('Czas $t$, s')
plt.ylabel('Droga $s$, m')

plt.autoscale(enable=True, axis='both', tight=None)
legend(loc='best')
plt.xlim(min(t),max(t))
plt.ylim(min(s),max(s))
plt.grid()

plt.show()

例如,当我将值t=arange(0,21,1)更改为t=arange(0,20,1)时,这会使我在x轴上的最大值=19.0,我的最大值与x轴的距离。当然,y轴的情况也是如此

我的问题是如何强制matplotlib生成轴上有最大值且轴末端有like的始终打印,like应始终用于我的目的,还是可以选择like作为选项

Matplotlib比我使用它更有效,但应该有这样的观点(上图)

通过这种方式,我可以在文本窗口中始终观察最大最小值,或者采取其他步骤来确保最大最小值。我想从Axis中阅读它们,问题是…mathplotlib中是否存在这种可能性???如果不是的话,我将关闭邮政


我认为有两种方法可以解决这个问题

将轴自动限制模式设置为舍入数 在
rcParams
中,您可以使用

rcParams['axes.autolimit_mode']='round_number'
并使用“最小”和“最大”关闭手动轴限制

plt.xlim(最小值(t),最大值(t))
plt.ylim(最小值,最大值)
这将产生下面的图像。尽管如此,轴的极值显示在最近的“整数”处,但用户可以大致捕捉数据范围限制。如果需要显示准确的值,可以从
rcParams
中看到无法直接使用的第二种解决方案

或–手动生成轴记号 此解决方案意味着显式要求给定数量的刻度。我想有一种方法可以根据轴的大小等来实现自动化。但是,如果每次处理相同的图形大小时或多或少都会遇到相同的问题,那么可以手动确定固定数量的刻度。这可以通过

plt.xlim(最小值(t),最大值(t))
plt.ylim(最小值,最大值)
plt.xticks(np.linspace(t.min(),t.max(),7))#任意选择
plt.yticks(np.linspace(s.min(),s.max(),5))#任意选择
生成了下面的图像,与您的图像示例非常相似


你为什么要写“应该永远是这样”?你知道默认情况下有没有这样的软件?因此,如果您的x轴以
19.12345
结尾,您希望在该位置使用与其他位置完全不同的格式打勾吗?而且可能会和他们重叠,因为我有这样的需要。当我计算一些我想在图上观察到的最大值时,它确保我以正确的方式阅读、计算一些东西,因为例如,我知道我可以怀疑什么。我用Fortran语言写了这样的情节。我采取了最大-最小/TIK的数量,这是没有问题的准备这种轴。Python和matplotlib更有效,这也是我使用它的原因,但它应该是那种可能性。Matplotlib扩展得如此之广,应该是众多可供选择的选项之一,但我认为作者Matplotlib忘记了它。使用Matplotlib,您可以显式设置刻度,例如
plt.xticks([0,2,4,6,8,10,12,14,16,19])
或使用一些。如果需要,您可以编写自己的ticker函数。包括端点通常是不需要的,因为大多数类型的绘图都有默认的填充。是的,非常感谢。第二个解决方案是我一直在寻找的。这对我来说足够了。谢谢。