Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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 如何创建以百分比计算数字的堆叠条形图?_R_Ggplot2_Bar Chart_Stackedbarseries - Fatal编程技术网

R 如何创建以百分比计算数字的堆叠条形图?

R 如何创建以百分比计算数字的堆叠条形图?,r,ggplot2,bar-chart,stackedbarseries,R,Ggplot2,Bar Chart,Stackedbarseries,我想为类似于以下内容的数据创建堆叠条形图。条形图应按种族代表每个诊所就诊的患者百分比,并应显示相应的数字 谁能帮我一下吗,因为我是R的新手。享受吧 底线是:在你的geom\u栏()中,这样做:geom\u栏(position=“fill”,stat=“identity”)享受 底线是:在geom_bar()中,执行以下操作:geom_bar(position=“fill”,stat=“identity”)使用ggplot2和tidyverse函数尝试这种方法。如@r2evans所述,请下次尝试

我想为类似于以下内容的数据创建堆叠条形图。条形图应按种族代表每个诊所就诊的患者百分比,并应显示相应的数字

谁能帮我一下吗,因为我是R的新手。

享受吧

底线是:在你的
geom\u栏()
中,这样做:
geom\u栏(position=“fill”,stat=“identity”)
享受


底线是:在
geom_bar()
中,执行以下操作:
geom_bar(position=“fill”,stat=“identity”)

使用
ggplot2
tidyverse
函数尝试这种方法。如@r2evans所述,请下次尝试使用数据创建一个可复制的示例。这是代码。您需要计算标签的位置,然后绘制代码:

library(ggplot2)
library(dplyr)
library(tidyr)
#Code
df %>% pivot_longer(-Race) %>%
  group_by(name) %>% mutate(Pos=value/sum(value)) %>%
  ggplot(aes(x=name,y=value,fill=Race))+
  geom_bar(stat = 'identity',position = 'fill')+
  geom_text(aes(y=Pos,label=value),position = position_stack(0.5))+
  scale_y_continuous(labels = scales::percent)
输出:

使用的一些数据:

#Data
df <- structure(list(Race = c("Caucasian/White", "African American", 
"Asian", "Other"), `Clinic A` = c(374, 820, 31, 108), `Clinic B` = c(291, 
311, 5, 15), `Clinic C` = c(330, 206, 6, 5), `Clinic D` = c(950, 
341, 6, 13)), class = "data.frame", row.names = c(NA, -4L))
#数据

df使用
ggplot2
tidyverse
函数尝试这种方法。如@r2evans所述,请下次尝试使用数据创建一个可复制的示例。这是代码。您需要计算标签的位置,然后绘制代码:

library(ggplot2)
library(dplyr)
library(tidyr)
#Code
df %>% pivot_longer(-Race) %>%
  group_by(name) %>% mutate(Pos=value/sum(value)) %>%
  ggplot(aes(x=name,y=value,fill=Race))+
  geom_bar(stat = 'identity',position = 'fill')+
  geom_text(aes(y=Pos,label=value),position = position_stack(0.5))+
  scale_y_continuous(labels = scales::percent)
输出:

使用的一些数据:

#Data
df <- structure(list(Race = c("Caucasian/White", "African American", 
"Asian", "Other"), `Clinic A` = c(374, 820, 31, 108), `Clinic B` = c(291, 
311, 5, 15), `Clinic C` = c(330, 206, 6, 5), `Clinic D` = c(950, 
341, 6, 13)), class = "data.frame", row.names = c(NA, -4L))
#数据

df您尝试或研究了什么?有几个很好的例子和代码可以复制。你尝试或研究了什么?有几个很好的例子与代码重现。