将高精度数据绘制为轴刻度或将其转换为不同的值?
Plotting high precision data as axis ticks or transforming it to different values?
我正在尝试使用高精度值作为 x 轴刻度在 matplotlib 中将一些数据绘制为直方图。数据介于 0 和 0.4 之间,但大多数值非常接近,例如:
0.05678, 0.05879, 0.125678, 0.129067
我使用 np.around()
来减少值(它使它们从 0 到 0.4 应该如此),但它对所有数据都不太适用。
这是一个工作得有点正确的例子 ->
还有一个没有 ->
你可以看到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
.
之间
所以我的问题是:
- 有没有办法解决这个问题并按原样反映我的数据?
- 是否最好为我的
rank
值提供不同的标签,以便将它们彼此分开更多,例如 - 1,2,3,4 否则我将失去数据的精度和一些有用的信息?
- 在这种情况下一般的做法是什么?不同的图形会有帮助吗?什么?
我不明白你的问题,你的数据在 0 到 0.4 之间这一事实应该不会影响它的显示方式。我不明白为什么除了调用 plt.hist()
.
还需要做任何其他事情
此外,您可以将一个数组传递给 bins
参数来指示您想要的 bins,这样您就可以执行类似的操作来强制 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))
我正在尝试使用高精度值作为 x 轴刻度在 matplotlib 中将一些数据绘制为直方图。数据介于 0 和 0.4 之间,但大多数值非常接近,例如:
0.05678, 0.05879, 0.125678, 0.129067
我使用 np.around()
来减少值(它使它们从 0 到 0.4 应该如此),但它对所有数据都不太适用。
这是一个工作得有点正确的例子 ->
还有一个没有 ->
你可以看到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
.
所以我的问题是:
- 有没有办法解决这个问题并按原样反映我的数据?
- 是否最好为我的
rank
值提供不同的标签,以便将它们彼此分开更多,例如 - 1,2,3,4 否则我将失去数据的精度和一些有用的信息? - 在这种情况下一般的做法是什么?不同的图形会有帮助吗?什么?
我不明白你的问题,你的数据在 0 到 0.4 之间这一事实应该不会影响它的显示方式。我不明白为什么除了调用 plt.hist()
.
此外,您可以将一个数组传递给 bins
参数来指示您想要的 bins,这样您就可以执行类似的操作来强制 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))