将高精度数据绘制为轴刻度或将其转换为不同的值?

时间:2016-11-17 14:32:06

标签: python matplotlib plot precision

我试图将一些数据绘制为matplotlib中的直方图,使用高精度值作为x轴刻度。数据介于0和0.4之间,但大多数值非常接近:

  

0.05678,0.05879,0.125678,0.129067

我使用np.around()来制作值(并且它使它们应该从0到0.4),但它并不适用于所有数据。 这是一个有点正确的例子 - >

还有一个没有&#t;> enter image description here

你可以看到0.4之后的分数是不对的。 以下是我在Jupyter Notebook中使用的代码:

plt.hist(x=[advb_ratios,adj_ratios,verb_ratios],color = ['r','y','b'], bins =10, label = ['adverbs','adjectives', 'verbs'])
plt.xticks(np.around(ranks,1))
plt.xlabel('Argument Rank')
plt.ylabel('Frequency')
plt.legend()
plt.show()

对于我正在绘制的两个直方图,只有不同的x,所有使用的x值都在0 and 1之间。

所以我的问题是:

  1. 有没有办法解决这个问题并反映我的数据?
  2. 为我的rank值提供不同的标签会更好地将它们彼此分开 - 例如1,2,3,4或者我会丢失数据的精确度和一些有用的信息吗?
  3. 在这种情况下,一般方法是什么?不同的图形会有帮助吗?什么?

1 个答案:

答案 0 :(得分:0)

我不了解您的问题,数据在0到0.4之间的事实不应影响它的显示方式。我不知道为什么你需要做其他事情,只需致电plt.hist()

此外,您可以将数组传递给bins参数以指示您想要的容器,因此您可以执行类似的操作以强制容器的大小始终相同

# Fake data
x1 = np.random.normal(loc=0, scale=0.1, size=(1000,))
x2 = np.random.normal(loc=0.2, scale=0.1, size=(1000,))
x3 = np.random.normal(loc=0.4, scale=0.1, size=(1000,))

plt.hist([x1,x2,x3], bins=np.linspace(0,0.4,10))

enter image description here