标签: stacked-chart

反向堆叠条形顺序

我正在使用ggplot创建一个堆积条形图,如下所示:

plot_df <- df[!is.na(df$levels), ] 
ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill")
Run Code Online (Sandbox Code Playgroud)

这给了我这样的东西:

在此输入图像描述

如何反转堆叠条本身的顺序,以便第1级位于底部,第5级位于每个条形的顶部?

我已经看到了很多关于这方面的问题(例如,如何使用ggplot2上的标识来控制堆积条形图的排序),并且常见的解决方案似乎是按照该级别对数据帧重新排序,因为ggplot正在使用确定顺序

所以我尝试使用dplyr进行重新排序:

plot_df <- df[!is.na(df$levels), ] %>% arrange(desc(levels))

然而,情节也是如此.不论我是按升序还是按降序排列,似乎也没有区别

这是一个可重复的例子:

group <- c(1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4)
levels <- c("1","1","1","1","2","2","2","2","3","3","3","3","4","4","4","4","5","5","5","5","1","1","1","1")
plot_df <- data.frame(group, levels)

ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill")
Run Code Online (Sandbox Code Playgroud)

r bar-chart ggplot2 stacked-chart dplyr

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

ggplot2:更改条形图上的堆栈顺序

我正在尝试使用facet_wrap创建一个堆积条形图,但我想要翻转我的堆叠变量("已开发")的顺序.我已经重新排序了这些因素,并尝试了"order = descend()"以及"scale_fill_manual",似乎没有任何效果.

这是我的代码:

developed=rep(c("developed","available"),6)
agriculture=rep(c(rep("loi",2), rep("dryland",2), rep("agroforestry",2)),2)  
acres=c(7435,24254,10609,120500,10651,75606,6037,9910,4390,895,9747,46893)
islands=c(rep("All islands",6), rep("Oahu",6))
all_is2=data.frame(developed, agriculture, acres, islands)
head(all_is2)
  developed  agriculture  acres      island
1 developed          loi   7435 All islands
2 available          loi  24254 All islands
3 developed      dryland  10609 All islands
4 available      dryland 120500 All islands
5 developed agroforestry  10651 All islands
6 available agroforestry  75606 All islands
Run Code Online (Sandbox Code Playgroud)

改变"农业"和"发达"的因素水平

all_is2$agriculture=factor(all_is2$agriculture,levels=c("loi","dryland","agroforestry"))
all_is2$developed=factor(all_is2$developed,levels=c("developed","available"))
levels(all_is2$developed)
[1] "developed" "available"
Run Code Online (Sandbox Code Playgroud)

然后,绘图:

ggplot(all_is2,aes(x=agriculture,y=acres,fill=developed))+
     geom_bar(position="stack", stat="identity")+
     facet_wrap(~islands)+ scale_fill_grey(start=0.8, end=0.2, name="")+ xlab("")+ylab("Acres")+theme_bw()+ scale_y_continuous(labels=comma)
Run Code Online (Sandbox Code Playgroud)

图表

我希望条形图的"开发"部分是灰色的,在条形图的"可用"部分的顶部是黑色的.并且图例也应该与条形的顺序相匹配.

此外,是否可以将facet_wrap"All islands"和"Oahu"移动到图表底部的"loi""dryland"和"agroforestry"下.谢谢您的帮助!!

r ggplot2 facet-wrap stacked-chart

12
推荐指数
1
解决办法
4376
查看次数

每个色调带有堆叠条的计数图

我正在寻找一种根据“色调”绘制带有堆叠条的计数图的有效方法。标准色调行为是根据第二列的值将计数拆分为平行条,我正在寻找的是一种将色调条堆叠以便快速比较总数的有效方法。

让我用一个来自泰坦尼克号数据集的例子来解释:

import pandas as pd
import numpy as np
import seaborn as sns
%matplotlib inline

df = sns.load_dataset('titanic')
sns.countplot(x='survived',hue='class',data=df)
Run Code Online (Sandbox Code Playgroud)

提供带有计数图和色调的标准 Seaborn 行为 带有计数图和色调的标准 Seaborn 行为

我正在寻找的是类似于每个色调的堆叠条 每个色调的堆叠条

为了获得最后一张图片,我使用了以下代码

def aggregate(rows,columns,df):
    column_keys = df[columns].unique()
    row_keys = df[rows].unique()

    agg = { key : [ len(df[(df[rows]==value) & (df[columns]==key)]) for value in row_keys]
               for key in column_keys }

    aggdf = pd.DataFrame(agg,index = row_keys)
    aggdf.index.rename(rows,inplace=True)

    return aggdf

aggregate('survived','class',df).plot(kind='bar',stacked=True)
Run Code Online (Sandbox Code Playgroud)

我相信有一些更有效的方法。我知道 seaborn 对堆叠条形不太友好……所以我尝试用我的函数重新排列数据集并使用 matplotlib,但我想还有一种更聪明的方法可以做到这一点。

非常感谢!

python bar-chart pandas stacked-chart seaborn

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

垂直堆叠的Google Bar Charts

我正在尝试使用Google Charts API生成垂直堆叠的条形图,我认为当找到该选项时我找到了解决方案:

isStacked: true
Run Code Online (Sandbox Code Playgroud)

但是,这似乎是水平添加堆叠(见下面的链接),我似乎无法找到一种方法来做到这一点.有人之前遇到过这个或者可以帮助我吗?

见:http://jsfiddle.net/tmA55/1/

谢谢

google-visualization bar-chart stacked-chart

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

是否可以在ggplot2堆叠条中的堆栈之间放置空间?

我从这里拿了这个例子:

DF <- read.table(text="Rank F1     F2     F3
1    500    250    50
2    400    100    30
3    300    155    100
4    200    90     10", header=TRUE)

library(reshape2)
DF1 <- melt(DF, id.var="Rank")

library(ggplot2)
ggplot(DF1, aes(x = Rank, y = value, fill = variable)) + 
geom_bar(stat = "identity")
Run Code Online (Sandbox Code Playgroud)

是否可以使用ggplot2创建堆叠条,如下图?我不想用不同的颜色区分堆栈.

在此输入图像描述

编辑:根据Pascal的评论,

ggplot(DF1, aes(x = Rank, y = value)) + 
geom_bar(stat = "identity",lwd=2, color="white")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我仍然有酒吧的白色边框.

r ggplot2 stacked-chart

10
推荐指数
1
解决办法
950
查看次数

将geom_text放置在geom_col堆积条形图中每个条形段的中间

我想将相应的值标签放在geom_col每个条形段中间的堆积条形图中.

但是,我天真的尝试失败了.

library(ggplot2) # Version: ggplot2 2.2

dta <- data.frame(group  = c("A","A","A",
                             "B","B","B"),
                  sector = c("x","y","z",
                             "x","y","z"),
                  value  = c(10,20,70,
                             30,20,50))

ggplot(data = dta) +
  geom_col(aes(x = group, y = value, fill = sector)) +
  geom_text(position="stack",
            aes(x = group, y = value, label = value)) 
Run Code Online (Sandbox Code Playgroud)

显然,设置y=value/2geom_text不帮助,无论是.此外,文本的顺序错误(反向).

任何(优雅的)想法如何解决这个问题?

r ggplot2 stacked-chart geom-text

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

堆积条形图中每个条形图的不同颜色 - 基本图形

我想绘制一个堆叠的条形图,如附图,但我希望颜色在类别aa,bb和cc之间变化.具体来说,我希望bb中的灰色块为红色,cc中的灰色块为绿色.以下代码作为一个简单示例,说明了我已经尝试过的内容:

aa=c(0.2,0.6,0.1,0.1)
bb=c(0.4,0.5,0.05,0.05)
cc=c(0.5,0.25,0.1,0.15)
x=cbind(aa,bb,cc)
x #the data
aa   bb   cc

[1,] 0.2 0.40 0.50
[2,] 0.6 0.50 0.25
[3,] 0.1 0.05 0.10
[4,] 0.1 0.05 0.15
Run Code Online (Sandbox Code Playgroud)

默认行为,所有块在每个类别中具有相同的颜色

col=rep(c("white","grey"),2)
col
# [1] "white" "grey"  "white" "grey" 

barplot(x,col=col)
Run Code Online (Sandbox Code Playgroud)

但我希望灰色块bb是红色,灰色块cc是绿色

col=cbind(rep(c("white","grey"),2),rep(c("white","red"),2),rep(c("white","green"),2))
col

[,1]    [,2]    [,3]   
[1,] "white" "white" "white"
[2,] "grey"  "red"   "green"
[3,] "white" "white" "white"
[4,] "grey"  "red"   "green"

barplot(x,col=col) #not working

col=c(rep(c("white","grey"),2),rep(c("white","red"),2),rep(c("white","green"),2))
col
[1] "white" "grey"  "white" "grey"  "white" "red"   "white" "red"   "white" "green" "white" …
Run Code Online (Sandbox Code Playgroud)

r stacked bar-chart stacked-chart

9
推荐指数
3
解决办法
6112
查看次数

点击堆积条形图上的事件 - ChartJs

我正在尝试在Stacked Bar图表上实现click事件.

数据如下所示:

var chartData = {
    type: 'horizontalBar',
    data: {
        labels: ['A0224', 'A3681', 'A3984', 'A4101', 'A4150', 'B0682', 'Others'],
        datasets: [
            {
                label: "P1",
                backgroundColor: '#cc3399',
                data: [6, 7, 6, 8, 6, 10, 3]
            },
            {
                label: "P2",
                backgroundColor: '#0099ff',
                data: [8, 9, 5, 8, 6, 10, 3]
            },
            {
                label: "P3",
                backgroundColor: '#0022ff',
                data: [6, 7, 6, 8, 6, 10, 3]
            }
        ]
    },
    options: {
        legend: { display: false },
        scales: {
            yAxes: [{
                stacked: true
            }],
            xAxes: …
Run Code Online (Sandbox Code Playgroud)

javascript jquery charts stacked-chart chart.js

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

如何使用 Seaborn 创建 FacetGrid 堆叠条形图?

我正在尝试绘制一个带有堆积条形图的 facet_grid。

我想使用 Seaborn。它的 barplot 函数不包含堆叠参数。

我尝试将 FacetGrid.map 与自定义可调用函数一起使用。

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

def custom_stacked_barplot(col_day, col_time, col_total_bill, **kwargs):
    dict_df={}
    dict_df['day']=col_day
    dict_df['time']=col_time
    dict_df['total_bill']=col_total_bill
    df_data_graph=pd.DataFrame(dict_df)
    df = pd.crosstab(index=df_data_graph['time'], columns=tips['day'], values=tips['total_bill'], aggfunc=sum)
    df.plot.bar(stacked=True)

tips=sns.load_dataset("tips")
g = sns.FacetGrid(tips, col='size',  row='smoker')
g = g.map(custom_stacked_barplot, "day", 'time', 'total_bill')
Run Code Online (Sandbox Code Playgroud)

但是,我分别得到了一个空画布和堆积条形图。

空画布:

在此处输入图片说明

Graph1分开:

在此处输入图片说明

图2:。

在此处输入图片说明

我该如何解决这个问题?谢谢您的帮助!

python matplotlib stacked-chart seaborn facet-grid

7
推荐指数
1
解决办法
2772
查看次数

Google Chart,如何在列顶部移动注释

我正在使用谷歌图表的堆积柱形图,我想要实现的是显示每列顶部的总数,我正在使用注释.当您查看图像时,不知何故只有第5列(1,307.20)上的注释按预期工作.

在此输入图像描述

在我调查的时候,这看起来像是谷歌图表的一个错误,这个错误可以解释如下

[[Date, Car, Motobike, {role: :annotation}],
[June 2015, 500, 0, 500],
[Feb 2015, 500, 600, 1100]]
[March 2015, 700, 0, 700],
Run Code Online (Sandbox Code Playgroud)

使用上面的数据,2015年2月的注释是唯一正确显示的注释,另外2个没有,因为当时的最后一个值是0,当我在6月和3月将最后一个值更改为1时,注释正确显示.

然后我想到一个解决方法是始终在顶部显示"非零"数据,这是结果:

在此输入图像描述

正确地将注释移到顶部,但正如您所看到的,它位于列中,我想要实现的是将其移动到列的顶部.

我坚持了一段时间,谷歌文档对这种情况没有多大帮助.任何帮助将受到高度赞赏

annotations google-visualization stacked-chart

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