我的数据由以下几部分组成:
大多数数字小于60,然后是2000年代的一些异常值。
我想以直方图的形式显示它,它的柱状图范围如下:
0-1, 1-2, 2-3, 3-4, ..., 59-60, 60-max
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.axes as axes
b = list(range(61)) + [2000] # will make [0, 1, ..., 60, 2000]
plt.hist(b, bins=b, edgecolor='black')
plt.xticks(b)
plt.show()这将显示以下内容:

基本上你看到的都是数字0 ..60在左边挤在一起,2000在右边。这不是我想要的。
所以我删除了[2000],得到了我想要的东西:

正如您现在看到的,它是更好的,但我仍然有以下问题:
我如何解决这个问题,使图表周围没有任何空白(在0之前和60之后有一个很大的差距)。
我如何解决这个问题,使60之后,在最后显示一个2000刻度,同时仍然保持大致相同的间距(不像第一个?)
发布于 2019-06-11 23:08:39
这里有一个使用随机数据的解决方案。我仍然不太明白你的第二个问题,但我试着根据你的措辞做一些事情
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.axes as axes
fig, ax = plt.subplots(figsize=(12, 6))
data= np.random.normal(10, 5, 5000)
upper = 31
outlier = 2000
data = np.append(data, 100*[upper])
b = list(range(upper)) + [upper]
plt.hist(data, bins=b, edgecolor='black')
plt.xticks(b)
b[-1] = outlier
ax.set_xticklabels(b)
plt.xlim(0, upper)
plt.show()

https://stackoverflow.com/questions/56546393
复制相似问题