标签: grouped-bar-chart

Seaborn 条形图来自列表而不是数据框

我正在尝试将我的图转换为Seaborn,但我遇到了多个条形图的问题。数据是列表的列表,如下所示:

raw_data = [[47.66773437098896, 47.585408826566024, 45.426437828641106, 44.955787935926836], 
           [47.700582993718115, 47.59796443553682, 45.38896827262796, 44.80916093973529], 
           [47.66563311651776, 47.476571906259835, 45.21460968763448, 44.78683755963528], 
           [47.248523637295705, 47.42573841363118, 45.52890109500238, 45.10243082784969], 
           [47.14532745960979, 47.46958795222966, 45.4804195003332, 44.97715435208194], 
           [46.61620129160194, 47.316775886868584, 45.053032014046366, 44.527497508033704]]
Run Code Online (Sandbox Code Playgroud)

我的简单seaborn脚本如下:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns    

def plot_sns(raw_data):
  data = np.array(raw_data)

  x = np.arange(len(raw_data))
  width = 0.2  # width of bar

  sns.axes_style('white')
  sns.set_style('white')

  ax = sns.barplot(x, data[:,0])
Run Code Online (Sandbox Code Playgroud)

这会产生以下图: 在此输入图像描述

我想在图表中并排添加更多条形(每组 4 个条形)。在 Matplotlib 中,我通过绘制右侧间隔的另一个条形来实现这一点,但在 Seaborn 中它不起作用。我看到的所有示例都使用 Pandas 数据框。

python bar-chart seaborn grouped-bar-chart

5
推荐指数
1
解决办法
1万
查看次数

如何从两个或多个数据帧绘制分组条形图

我有多个数据框,我想将它们绘制在分组条形图视图中的同一个图形上。

这是两个非常小的数据框,我想将它们绘制在同一张图中。

数据框是:

我的数据框

我想绘制一个像这样的例子的图:

我想要的例子

我尝试这样做,只绘制一张图:

fig, ax = plt.subplots()

df1.plot.bar(x='Zona',y='Total_MSP')
df4.plot.bar(x='Zona',y='NumEstCasasFavelas2017',ax=ax)

plt.show()
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个:

fig, ax = plt.subplots()

df1.plot.bar(x='Zona',y='Total_MSP',ax=ax)
df4.plot.bar(x='Zona',y='NumEstCasasFavelas2017',ax=ax)

plt.show()
Run Code Online (Sandbox Code Playgroud)

结果只是图片中单个数据帧的数据,而不是两个数据帧的两个数据。请注意,只有两个数据帧的标题出现在同一张图片中,数据仅来自单个独立的数据帧。

我的失败

python matplotlib bar-chart pandas grouped-bar-chart

4
推荐指数
1
解决办法
2万
查看次数

将两个堆积条形图合并为分组堆积条形图

于是我在网上找到了如下代码:

import matplotlib.pyplot as plt
import matplotlib

matplotlib.style.use('ggplot')

plotdata = pd.DataFrame({
    "2018_m":[40, 12, 10, 26, 36],
    "2019_m":[19, 8, 30, 21, 38],
    "2020_m":[10, 10, 42, 17, 37]
    }, index=["Dad", "Mam", "Bro", "Sis", "Me"]
)

plotdata2 = pd.DataFrame({
    "2018_y":[20, 22, 10, 34, 12],
    "2019_y":[12, 19, 27, 35, 14],
    "2020_y":[21, 31, 52, 20, 34]
    }, index=["Dad", "Mam", "Bro", "Sis", "Me"]
)

stacked_data = plotdata.apply(lambda x: x*100/sum(x), axis=1)
stacked_data2 = plotdata2.apply(lambda x: x*100/sum(x), axis=1)
stacked_data.plot(kind="bar", stacked=True)
stacked_data2.plot(kind="bar", stacked=True)
Run Code Online (Sandbox Code Playgroud)

这是输出:

在此输入图像描述

我想知道将它们组合起来的最佳方式是什么,以便爸爸、妈妈、兄弟等每个人都有两个堆叠的条形?我在 Stack Overflow 上在线和其他地方遇到了一堆其他分组的堆叠条形码,但它们要求您迭代地定义每个条形的值,而理想情况下我只想引用数据框名称“plotdata” ' …

python matplotlib pandas stacked-bar-chart grouped-bar-chart

4
推荐指数
1
解决办法
2603
查看次数

配置 Altair 图表的标题和轴

我最近正在学习如何使用 Altair 创建图表,但在自定义标题和轴时遇到了一些问题。我的图表代码目前如下所示:

chart = Chart(data).mark_bar().encode(
    column='Cell Type',
    x='Truth/Pred',
    y='03',
    color='Truth/Pred',
).properties(
    title='Truth vs Predictions for Cell Type Percentages'
).configure_axisBottom(
    disable = True
).configure_axisTop(
    # labelPadding = 100
    orientation = "bottom"
).configure_axisY(
    title = "Cell Type Percentages"
)

chart.display()
Run Code Online (Sandbox Code Playgroud)

图表如下所示: 由上面的代码生成的图表

我有几个问题。

有没有办法让标题居中?

其次,我试图将 Y 轴设置为“单元格类型百分比”,但似乎没有 Y 轴,我不确定为什么。

最后,我尝试将顶部轴移至底部,并将标签稍微隔开一点,或旋转它们,使它们不会彼此重叠。然而,配置 axisTop 参数似乎根本不影响 Cell Type 轴!我也不确定为什么会这样。

我尝试遵循此堆栈溢出问题的答案:链接到相关问题

但我总是收到错误说明"additional properties are not allowed",所以我不确定他们是否停止在构造函数中使用配置属性。

任何帮助表示赞赏。谢谢你!

data-visualization altair grouped-bar-chart

4
推荐指数
1
解决办法
4200
查看次数

如何对堆积条形图进行分组?

我正在尝试创建一个分组的堆叠条形图。

目前我有以下数据框:

>>> df
                                       Value                     
Rating                                 1          2         3
Context Parameter                                
Total   1                          43.312347   9.507902  1.580367
        2                          42.862649   9.482205  1.310549
        3                          43.710651   9.430811  1.400488
        4                          43.209559   9.803418  1.349094
        5                          42.541436  10.008994  1.220609
        6                          42.978286   9.430811  1.336246
        7                          42.734164  10.317358  1.606064
User    1                          47.652348  11.138861  2.297702
        2                          47.102897  10.589411  1.848152
        3                          46.853147  10.139860  1.848152
        4                          47.252747  11.138861  1.748252
        5                          45.954046  10.239760  1.448551
        6                          46.353646  10.439560  1.498501
        7                          47.102897  11.338661  1.998002
Run Code Online (Sandbox Code Playgroud)

我希望将每个参数的“总计”“用户”栏分组在一起。

这是生成的图表df.plot(kind='bar', stacked=True)

没有分组的堆积条形图

这些条形本身看起来是正确的,但是如何让每个Parameter的 …

python matplotlib seaborn stacked-bar-chart grouped-bar-chart

3
推荐指数
1
解决办法
5411
查看次数

如何在躲闪(色调)组中的条形之间添加空间?

如何在seaborn histplot 中的男性和女性条之间添加空格?

import seaborn as sns
tips = sns.load_dataset("tips")
sns.histplot(data=tips, x="day", hue="sex", multiple="dodge", shrink=.9)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python matplotlib seaborn grouped-bar-chart seaborn-0.12.x

2
推荐指数
1
解决办法
1239
查看次数