我想用大约6万个值绘制我的df的直方图。在我使用plt.hist(x, bins = 30)
后,它给了我类似
问题是有更多的值大于20但这些值的频率可能小于10.那么如何调整显示的轴以显示更多的箱子,因为我想在这里查看整个分布。 / p>
答案 0 :(得分:0)
您可以使用# CPU frequency in GHz
CPU_FREQ=2.0
if [ "$IS_LINUX" -ne "0" ] && [ -e "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" ]; then
CPU_FREQ=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq)
CPU_FREQ=$(awk "BEGIN {print $CPU_FREQ/1024/1024}")
elif [ "$IS_DARWIN" -ne "0" ]; then
CPU_FREQ=$(sysctl -a 2>/dev/null | $GREP 'hw.cpufrequency' | head -1 | awk '{print $3}')
CPU_FREQ=$(awk "BEGIN {print $CPU_FREQ/1024/1024/1024}")
elif [ "$IS_SOLARIS" -ne "0" ]; then
CPU_FREQ=$(psrinfo -v 2>/dev/null | $GREP 'MHz' | head -1 | nawk '{print $6}')
CPU_FREQ=$(nawk "BEGIN {print $CPU_FREQ/1024}")
fi
答案 1 :(得分:0)
直方图偏向于一个值的问题是你将基本上平掉任何偏离的值。解决方案可能只是用两个图表来呈现数据。
您可以创建另一个仅包含大于20的值的直方图吗?
(伪代码,因为我不知道你帖子中的数据结构)
plt.hist(x[x.column > 20], bins = 30)
答案 2 :(得分:0)
最后,它看起来像这个例子:
import matplotlib.pyplot as plt
import numpy as np
values1 = np.random.rand(1000,1)*100
values2 = np.random.rand(100000,1)*5
values3 = np.random.rand(10000,1)*20
values = np.vstack((values1,values2,values3))
fig = plt.figure(figsize=(12,5))
ax1 = fig.add_subplot(121)
ax1.hist(values,bins=30)
ax1.set_yscale('log')
ax1.set_title('with log scale')
ax2 = fig.add_subplot(122)
ax2.hist(values,bins=30)
ax2.set_title('no log scale')
fig.savefig('test.jpg')