Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.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
是否使用函数/数据集中的facet_wrap?_R_Ggplot2 - Fatal编程技术网

是否使用函数/数据集中的facet_wrap?

是否使用函数/数据集中的facet_wrap?,r,ggplot2,R,Ggplot2,我有我在下面写的函数,我使用ggplot2创建了一个图,显示每个人有多少男性和女性(来自babynames数据集) library(babynames) 安娜% 过滤器(名称==“安娜”,年份>=1920)%>% 按年龄、性别划分的组百分比> 总结(n=总和(n))%>% 变异(n=n/和(n,na.rm=TRUE)*100) anna_plot基本上是相同的方法。您只需筛选所有四个名称或您想要的名称,然后还可以选择group\u byname。试试这个: library(babynames)

我有我在下面写的函数,我使用ggplot2创建了一个图,显示每个人有多少男性和女性(来自babynames数据集)

library(babynames)
安娜%
过滤器(名称==“安娜”,年份>=1920)%>%
按年龄、性别划分的组百分比>
总结(n=总和(n))%>%
变异(n=n/和(n,na.rm=TRUE)*100)

anna_plot基本上是相同的方法。您只需筛选所有四个名称或您想要的名称,然后还可以选择
group\u by
name
。试试这个:

library(babynames)
#> Warning: package 'babynames' was built under R version 3.6.3
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
library(ggplot2)

df <- babynames %>%
  filter(name %in% c("Anna", "Henry", "Casey", "Dana"),
         year >=1920) %>%
  group_by(name, year, sex) %>%
  summarise(n = sum(n)) %>%
  mutate(n = n / sum(n, na.rm = TRUE) * 100) %>% 
  # Example of reorder names and sex
  ungroup() %>% 
  mutate(name = factor(name, c("Anna", "Dana", "Casey", "Henry")),
         sex = factor(sex, c("M", "F")))

ggplot(df, aes(x = year, y = n, fill = sex)) +
  geom_area(position = 'stack', color="black") +
  facet_wrap(~name)
library(babynames)
#>警告:包“babynames”是在R版本3.6.3下构建的
图书馆(dplyr)
#> 
#>正在附加包:“dplyr”
#>以下对象已从“package:stats”屏蔽:
#> 
#>滤波器,滞后
#>以下对象已从“package:base”屏蔽:
#> 
#>相交、setdiff、setequal、并集
图书馆(GG2)
df%
过滤器(名称%c(“安娜”、“亨利”、“凯西”、“达娜”),
年份>=1920)%>%
组别(姓名,年份,性别)%>%
总结(n=总和(n))%>%
变异(n=n/和(n,na.rm=TRUE)*100)%>%
#重新排列姓名和性别的示例
解组()%>%
突变(名称=因子(名称,c(“安娜”、“达娜”、“凯西”、“亨利”)),
性别=系数(性别,c(“M”,“F”))
ggplot(df,aes(x=年份,y=n,fill=性别))+
几何图形区域(位置=‘堆叠’,颜色=‘黑色’)+
面_包裹(~name)


由(v0.3.0)于2020-03-08创建

谢谢!!有没有办法让名字以不同的、非字母顺序出现?有没有可能让M在图表的顶部,而F在底部?抱歉问了这么多问题。嗨,提莫。当然可以。刚刚做了一个编辑。在这两种情况下,方法是相同的。只需根据需要重新排列向量或因子。(;
anna_plot <- ggplot(anna, aes(x = year, y = n, fill = sex)) +
  geom_area(position = 'stack', color="black")
anna_plot
library(babynames)
#> Warning: package 'babynames' was built under R version 3.6.3
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
library(ggplot2)

df <- babynames %>%
  filter(name %in% c("Anna", "Henry", "Casey", "Dana"),
         year >=1920) %>%
  group_by(name, year, sex) %>%
  summarise(n = sum(n)) %>%
  mutate(n = n / sum(n, na.rm = TRUE) * 100) %>% 
  # Example of reorder names and sex
  ungroup() %>% 
  mutate(name = factor(name, c("Anna", "Dana", "Casey", "Henry")),
         sex = factor(sex, c("M", "F")))

ggplot(df, aes(x = year, y = n, fill = sex)) +
  geom_area(position = 'stack', color="black") +
  facet_wrap(~name)