Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在ggplot2中绘制堆叠条形图:将一个变量表示为另一个变量的百分比_R_Ggplot2 - Fatal编程技术网

R 在ggplot2中绘制堆叠条形图:将一个变量表示为另一个变量的百分比

R 在ggplot2中绘制堆叠条形图:将一个变量表示为另一个变量的百分比,r,ggplot2,R,Ggplot2,正如标题所述,我试图绘制一个堆叠条形图,其中一个堆栈应该占另一个堆栈的百分比,而不是组合百分比 应用程序是采样,我想显示样本大小占总体大小的百分比 这就是我尝试过的: 左侧的表格绘制到右侧的条形图中 请参见下面的代码: temp <- Countemf() temp$Type <- factor(temp$Type) temp %>% rename(Environment=Type)%>% tidyr::gather(Class, Size, -Envir

正如标题所述,我试图绘制一个堆叠条形图,其中一个堆栈应该占另一个堆栈的百分比,而不是组合百分比

应用程序是采样,我想显示样本大小占总体大小的百分比

这就是我尝试过的: 左侧的表格绘制到右侧的条形图中

请参见下面的代码:

temp <- Countemf()
temp$Type <- factor(temp$Type)

temp %>% 
  rename(Environment=Type)%>% 
  tidyr::gather(Class, Size, -Environment ) %>% 
  ggplot(., aes(x=Environment, y=Size, fill=Class)) +
    geom_bar(stat="identity",position = "fill")+  
    scale_y_continuous(labels = scales::percent_format())
temp%
tidyr::聚集(类,大小,-环境)%>%
ggplot(,aes(x=环境,y=大小,填充=类别))+
几何图形栏(stat=“identity”,position=“fill”)+
比例是连续的(标签=比例::百分比格式()

我仍然不确定我是否正确理解了你的意思。但我觉得用一个例子来说明问题更容易。因此,这里有一个可能的(但可能不是最优雅的)解决方案:

temp <- dplyr::tibble(type=c("Core","Mainframe","Network","Oracle","Unix"),
                      sample=c(2,2,3,2,2),
                      pop=c(4,17,31,3,2))
temp %>%
    dplyr::mutate(diff=pop-sample) %>%
    tidyr::pivot_longer(cols=c(sample,pop,diff)) %>%
    dplyr::filter(name!="pop") %>%
    ggplot2::ggplot(ggplot2::aes(x=type,y=value,fill=name)) +
    ggplot2::geom_bar(stat="identity") 
temp%
dplyr::mutate(diff=pop样本)%>%
tidyr::pivot_更长(cols=c(样本、pop、差异))%>%
dplyr::筛选器(名称!=“pop”)%>%
ggplot2::ggplot(ggplot2::aes(x=类型,y=值,fill=名称))+
ggplot2::几何图形栏(stat=“identity”)

我仍然不确定我是否正确理解了你的意思。但我觉得用一个例子来说明问题更容易。因此,这里有一个可能的(但可能不是最优雅的)解决方案:

temp <- dplyr::tibble(type=c("Core","Mainframe","Network","Oracle","Unix"),
                      sample=c(2,2,3,2,2),
                      pop=c(4,17,31,3,2))
temp %>%
    dplyr::mutate(diff=pop-sample) %>%
    tidyr::pivot_longer(cols=c(sample,pop,diff)) %>%
    dplyr::filter(name!="pop") %>%
    ggplot2::ggplot(ggplot2::aes(x=type,y=value,fill=name)) +
    ggplot2::geom_bar(stat="identity") 
temp%
dplyr::mutate(diff=pop样本)%>%
tidyr::pivot_更长(cols=c(样本、pop、差异))%>%
dplyr::筛选器(名称!=“pop”)%>%
ggplot2::ggplot(ggplot2::aes(x=类型,y=值,fill=名称))+
ggplot2::几何图形栏(stat=“identity”)

如果我理解正确,您希望在图表中显示
Pop.size-S.size
S.size
。因此,在
tidyr::gather``之前,您可以插入类似于
mutate(diff.size=Pop.size-S.size)``的内容,`您是否试图绘制每种类型的绝对值以及相对于绝对Pop\u大小的每种样本的大小?@Wolfgang Arnold我将尝试绘制与S.size的差异大小,并让您知道它是否有效,谢谢@sambold I最初试图绘制s.size与pop.size的相对大小,其中pop.size代表100%的人口。但是将pop_大小绘制为相对于绝对pop_大小-s.size的绝对值也是一个解决方案:)如果我理解正确,您希望在图表中显示
pop.size-s.size
s.size
。因此,在
tidyr::gather``之前,您可以插入类似于
mutate(diff.size=Pop.size-S.size)``的内容,`您是否试图绘制每种类型的绝对值以及相对于绝对Pop\u大小的每种样本的大小?@Wolfgang Arnold我将尝试绘制与S.size的差异大小,并让您知道它是否有效,谢谢@sambold I最初试图绘制s.size与pop.size的相对大小,其中pop.size代表100%的人口。但将pop_大小绘制为相对于绝对pop_大小-s的绝对值。size也是一种解决方案:)