【问题标题】:Plot histogram with classes in python [duplicate]用python中的类绘制直方图[重复]
【发布时间】:2017-04-26 16:38:24
【问题描述】:

我正在尝试绘制类似于下一个的情节

但到目前为止,我不知道如何获得课程。我尝试过使用 matplotlib 和 seaborn,但仍然不知道如何合并这些类。

df.age.hist()

g = sns.pairplot(df, hue='class')

其实我想要的是seaborn中pairplot的对角线

【问题讨论】:

标签: python matplotlib plot histogram seaborn


【解决方案1】:

这样的?

import numpy as np
import matplotlib.pyplot as plt

bins = 10
data = np.random.randn(1000, 3)

colors = ['blue','green', 'red']
plt.hist(data, bins, histtype='bar', color=colors, stacked=True, fill=True)

plt.show()

【讨论】:

    【解决方案2】:

    所以你想要做的就是所谓的堆栈条形图(至少我这么称呼它)。我认为Bokeh 有一种直观的方式来可视化这个条形图。这个原理同样适用于 Pandas plot 和 Seaborn。

    散景库

    在这里,我展示了一个带有两个标签 ab 的简单数据框示例。您可以告诉您要堆叠在v1 上,在这种情况下是每个标签的类。在这种情况下,我们将有 10 类。并且值对应于我们想要堆叠的值,在这种情况下是v2

    显示条形图的代码sn-p如下

    import pandas as pd
    from bokeh.charts import Bar, output_file, show
    
    df = pd.DataFrame([['a', 0, 1], 
                       ['a', 1, 2], 
                       ['b', 0, 2], 
                       ['b', 1, 3]], 
                   columns=['name', 'v1', 'v2'])
    
    
    bar = Bar(df, stack='v1', values='v2', label='name')
    output_file("bar.html")
    show(bar)
    

    熊猫库

    对于 Pandas,您可以改用 groupbysum。在这里,我们将按列 namev1 分组,然后总结列 v2。之后,我们可以堆叠使用plot 方法来绘制条形图。

    df_agg = df.groupby(['name', 'v1'])['v2'].sum().unstack()
    df_agg.plot(kind='bar', stacked=True)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 2018-05-23
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      相关资源
      最近更新 更多