如何更改直方图中显示的轴范围

时间:2016-06-16 01:53:22

标签: python matplotlib

我想用大约6万个值绘制我的df的直方图。在我使用plt.hist(x, bins = 30)后,它给了我类似enter image description here

的内容

问题是有更多的值大于20但这些值的频率可能小于10.那么如何调整显示的轴以显示更多的箱子,因为我想在这里查看整个分布。 / p>

3 个答案:

答案 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

PyPlot Logarithmic and other nonlinear axis

答案 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')

enter image description here