【问题标题】:using a list to create a histogram bar graph使用列表创建直方图条形图
【发布时间】:2018-01-31 22:37:28
【问题描述】:

首先让我说我知道直方图函数,它只是从数据列表中创建一个漂亮的直方图。对于这个项目,我正在尝试以某种艰难的方式完成所有事情,因为就我而言,更多的代码=更多的练习。

现在问题的核心是,在大量帮助下,我设法编写了提取数据集的代码,获取用户输入的标题和箱数,并将所有内容准确地压缩成“直方图”列表,例如[1,3,5,3,1] 的数字对应于数据范围的频率。

从这一点开始,我要做的是获取该直方图列表并将其放置在使用plt.bar() 的条形图中。我对plt.scatter() 有点熟悉,但似乎 bar 的工作方式与

plt.bar(x, y, align='center')
plt.xticks(y)
plt.show

x 是一个包含 bin 分离值的列表,y 是频率列表,只返回一个空图。任何帮助将不胜感激。

编辑:代码修改:

column="voltage"
y=[14, 5, 5, 4, 3, 5, 5, 4, 6, 9] # frequencies
x=[-4.9183599999999998, -3.916083, -2.9138060000000001, -1.9115290000000003, 
-0.90925200000000039, 0.093024999999999025, 1.0953019999999993, 
2.0975789999999996, 3.0998559999999991, 4.1021329999999985, 
5.1044099999999979] #bin limits
z=range(len(y))
plt.bar(z, y, 1.0)
plt.xlabel("%s" %column)
plt.xticks(z, x)
plt.show()

产生:

非常接近,最终我需要对 x 进行四舍五入,但在此之前,如何让刻度与右侧对齐?另外,为什么 xlabel 行输出“1”而不是字符串?

【问题讨论】:

    标签: python python-3.x histogram


    【解决方案1】:

    您的show 缺少一些() - 并且您的代码不符合mvce 的条件。

    这行得通:

    import matplotlib.pyplot as plt
    
    y = [1,1,4,7,4,3]
    
    x = range(len(y))
    
    plt.bar(x, y, 0.75, color="blue")
    plt.show()
    


    您的 y 和 x 具有不同的尺寸,它们将被裁剪为较短的尺寸。

    import matplotlib.pyplot as plt
    
    column="voltage"
    y=[14, 5, 5, 4, 3, 5, 5, 4, 6, 9] # frequencies
    x=[-4.9183599999999998, -3.916083, -2.9138060000000001, -1.9115290000000003, 
    -0.90925200000000039, 0.093024999999999025, 1.0953019999999993, 
    2.0975789999999996, 3.0998559999999991, 4.1021329999999985, 
    5.1044099999999979] #bin limits
    z=range(len(y))
    
    plt.bar(z, y, 0.8)
    plt.xlabel("%s" %column) 
    
    plt.xticks(z,[str(round(i,4)) for i in x], rotation=35) # round, label and use
    
    plt.show()
    

    我调整了弹出窗口中的子图边框,您需要对其进行编码。如何以及如何将所有条向右移动,使其位于刻度之间,请参阅:

    Move graph position within plot (matplotlib)

    matplotmagic 对我来说太多了。

    【讨论】:

    • 感谢 mvce 提示,希望我的编辑更好。
    • @a.f.uwrf 一个 mvce:我可以将您的代码复制到我的 IDE 中并运行(或产生错误)。请参阅编辑以获取标签和链接以进行移动。一个接一个的问题被认为是不好的。接受答案,如果您有新问题,请提出。这很糟糕,因为任何寻找“如何更改 xaxis 上的标签”的人都不会在搜索 b/c 标题中找到关于“使用列表创建直方图条形图”的问题 - 所以这部分知识被埋没并贴错标签。
    猜你喜欢
    • 2020-01-12
    • 2014-12-04
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多