2016-11-17 37 views
0

我想绘制一些数据作为matplotlib中的直方图,使用高精度值作为x轴刻度。该数据为0和0.4之间,但最值非常接近,如:绘制高精度数据作为坐标轴或将其转换为不同的值?

0.05678,0.05879,0.125678,0.129067

我使用,以使这些值np.around()(并且让他们为它应该从0到0.4)减少,但对于所有的数据来说它并不适用。 这里是工作有点权的一个示例 - >

和一个没有 - >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,我绘制相同的,所使用的所有x0 and 1之间。

所以我的问题是:

  1. 有没有办法来解决这个问题,并反映了我的数据,因为它是什么?
  2. 为我的rank值赋予不同的标签会更好地将它们彼此分开 - 例如1,2,3,4,否则我会失去数据的准确性和一些有用的信息?
  3. 这种情况下的一般方法是什么?会有不同的图形帮助吗?什么?
+0

缩放数据只是为了绘制它是一个选项?例如使用56.78和58.79代替。 –

回答

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

+0

问题是所有值都非常接近,如果我不执行np.around()x轴显示为黑线,并且显示第二个图形我已经证明你可以看到0.4之后有多少个垃圾桶,你的回答部分清除了这些垃圾。但是如果我想用我的等级数组作为xticks,我该如何强制这样呢?我的意思是假设我不知道范围如何变化? – nitheism

相关问题