如何在facet_grid中的ggplot2中显示更高的值

时间:2017-08-01 07:21:02

标签: ggplot2 facet-grid

我刚刚在ggplot2中找到了facet_grid函数,它真棒。问题是:我列出了6个国家(HC列)和世界各地的航班目的地。我的数据如下所示:

Geograp %>% 
  gather(key=Destination, value=freq, -Reason, -Qcountry) %>%
  rename(HC = Qcountry) %>%
  group_by(HC,Reason) %>%
  mutate(Perc=freq*100/sum(freq)) %>%
  ggplot(aes(x=Perc, y=reorder(Destination,Perc))) +
  geom_point(size=3) +
  theme_bw() +
  facet_grid(HC~Reason) +
  theme(panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        panel.grid.major.y = element_line(colour = "grey60", linetype = "dashed"))

有没有办法在每个国家/地区只显示前十个目的地并使用facet_grid功能?我试图以这种方式制作散点图:

RelativeLayout.LayoutParams params = img.getLayoutParams();

产生此图:call load()我想避免y轴上的过度绘图。在此先感谢!!!

2 个答案:

答案 0 :(得分:2)

您可以按国家/地区创建指示每个目的地的排名的变量,然后在ggplot调用中选择排名为< = 10的行,例如,

ggplot(data = mydata[rank <= 10, ], ....)

PS:目前,您使用管道在一行中创建数据和绘图数据。我会将数据创建和绘图步骤分开。

答案 1 :(得分:0)

由于您尚未以正确的格式发布您的数据(请查看dput()),我只使用了一个示例数据。使用dplyr包我在这种情况下通过grp变量(group_by(grp)分组,在您的情况下是国家)并选择前10行(...top_n(n = 10,...)按x变量(wt = x排序,在你的情况下它将是 freq )并进一步绘制(仅在这种情况下散点图):

library(dplyr)
set.seed(123)
d <- data.frame(x   = runif(90),grp = gl(3, 30))

d %>%
group_by(grp) %>%
top_n(n = 10, wt = x) %>%
ggplot(aes(x=x, y=grp)) + geom_point()