问题描述
我生成如下图:
set.seed(1)
#use rowwise
df %>%
rowwise() %>%
mutate(x2 = ifelse(x == 0,sample(1:10,1),x))
# x x2
# <dbl> <dbl>
# 1 1 1
# 2 2 2
# 3 3 3
# 4 0 9
# 5 5 5
# 6 0 4
# 7 7 7
# 8 8 8
# 9 9 9
# 10 10 10
例如,当我将值t = arange(0,21,1)更改为t = arange(0,20,1)时,例如在x轴上,最大值为19.0,我的最大值从x轴。当然,对于y轴也是如此。
我的问题是如何强制matplotlib生成总是在轴上位于轴末端上的最大值的图,就像应该总是出于我的目的,还是应该像选项?
Imiage from my program in Fortan I did some years ago
我使用Matplotlib效率更高,但应该有这样的选择(上图)。
通过这种方式,我始终可以在文本窗口中观察最大最小值,也可以采取其他步骤来确保最大最小值。我想从轴上读取它们,问题是... mathplotlib中是否存在这样的可能性?如果没有,我将关闭该帖子。
Axes I am thinking about more or less
解决方法
我看到两种解决问题的方法。
将轴自动限制模式设置为舍入数字
在rcParams
中,您可以使用
rcParams['axes.autolimit_mode'] = 'round_numbers'
并使用最小和最大关闭手动轴限制
plt.xlim(min(t),max(t))
plt.ylim(min(s),max(s))
这将产生以下图像。尽管如此,轴的极值仍显示在最接近的“整数”处,但用户可以大致捕获数据范围限制。如果需要显示确切的值,可以从rcParams
看到不能直接使用的第二个解决方案。
或–手动生成轴刻度线
此解决方案意味着明确要求给定的滴答数。我猜想有一种方法可以根据轴的大小等来自动执行它。但是,如果每次相同的图形大小都要处理更多或更少的内容,则可以手动确定固定的刻度数。这可以通过
完成plt.xlim(min(t),max(s))
plt.xticks(np.linspace(t.min(),t.max(),7)) # arbitrary chosen
plt.yticks(np.linspace(s.min(),s.max(),5)) # arbitrary chosen
生成了下面的图像,与您的图像示例非常相似。