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也是一种解决方案:)