【问题标题】:Is it necessary to use a plt.bar() to center labels in a log histogram?是否有必要使用 plt.bar() 在日志直方图中居中标签?
【发布时间】:2021-09-26 15:36:42
【问题描述】:

我一直在努力在此日志图中将直方图条下方的标签居中。具体来说,我希望第一个条超过“1”,因为这是第一个值。

所有在线解决方案似乎都建议使用 plt.bar() 函数,我还没有正确处理日志比例和 bin 大小。我需要使用条形图从头开始吗?解决此问题以使直方图居中的任何其他提示?数据链接在这里:https://drive.google.com/file/d/1USxTNcxveKoM1X_-TTn6ZX4GcUdRm2a7/view?usp=sharing。代码和当前图如下:

import pandas as pd
import matplotlib.pyplot as plt

MJ = pd.read_excel('MJ1a_data.xlsx')
hist = plt.hist(x = MJ.MJ1a, 
bins=np.logspace(start=np.log10(1), stop=np.log10(10000), num=25), rwidth = .7)
plt.gca().set_xscale('log')
plt.xticks(ticks = [1,10,100,1000,10000],labels = [1,10,100,1000,10000], horizontalalignment = 'center', fontname = "Arial", fontsize = 14, fontweight = 'medium')
plt.yticks(fontname = "Arial", fontsize = 14, fontweight = 'medium')
plt.xlabel("Total Lifetime MJ Use", fontname = 'Arial', fontsize = 14)
plt.ylabel("Frequency", fontname = 'Arial', fontsize = 14)

【问题讨论】:

    标签: python data-visualization histogram logarithm


    【解决方案1】:

    直方图条形图是针对不同情况的不同绘图类型。直方图用于显示连续变量的近似分布,而条形图用于比较几个类别的频率。

    由于您的 x 变量是连续的,因此直方图绝对是条形图的正确选择。但是现在您显然正试图使直方图看起来像条形图。我强烈建议不要这样做,因为这会产生误导。

    具体来说,不要将宽度设置为较低的值。 “条”应该在直方图中相互接触,因为它们显示了指定箱的密度,并且箱之间没有间隙。 1 应该在第一个“条”下方居中,因为它是第一个 bin 的左边框。居中意味着它是第一个 bin 内的平均值。

    【讨论】:

      猜你喜欢
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 2011-12-03
      相关资源
      最近更新 更多