ggplot的功能:动态图的特定选择参数

时间:2019-04-30 10:06:49

标签: r function ggplot2

我在R语言中很新,并且在算法上有一些理解上的问题。

我有一个名为country_function()的函数,可以绘制条形图。 输入数据为“ export00”,因此country_function(export00)运行良好。

但是我想在函数中添加一个参数t来创建数据选择。

我的数据框非常简单:

   Country          Number

 1 Portugal         100000       
 2 Poland           200000       
 3 Israel           300000 
 4 South Africa     400000
 5 Austria          500000

我希望“ t”为我要查看的国家/地区的数量,其余的归为“其他”类别。

因此country_function(export00, 2)将显示数量最大的2个国家(奥地利和南非),其余为“其他”(其他是数量的总和)。

目前,我的代码正在使用ifelse来选择某个数字下的国家(“ ifelse(Number <400000 ...”)。因此,很容易输入ta来将数字替换为t。但是对于新代码我不知道要修改什么。

country_function <- function(export00) {

  country = export00 %>%
    filter(Number> 100000000) %>%
    mutate(Country = ifelse(Number< 400000000, "Other", Country)) %>%
    group_by(Country) %>%
    summarise(Number= sum(Number))

  p_country = country %>%
    arrange(Number) %>%
    mutate(Country = factor(Country, levels = Country)) %>%
    ggplot(aes(x = Country, y = Number, label = Number, fill = Number)) +
    geom_text(check_overlap = TRUE, hjust = "bottom", size = 2)

  return(p_country)
}

总而言之,我有一个图表可以选择多个国家/地区,选择最小值,其余为其他,但我想选择要在图表中看到的国家/地区和休息成为其他人。

1 个答案:

答案 0 :(得分:0)

也许是这样吗?

country_function <- function(export00, n) {

  country = export00 %>%
    arrange(Number) %>%
    mutate(Country = ifelse(row_number() >= n, as.character(Country), "Other")) %>%
    group_by(Country) %>%
    summarise(Number= sum(Number))

  p_country = country %>%
    arrange(Number) %>%
    mutate(Country = factor(Country, levels = Country)) %>%
    ggplot(aes(x = Country, y = Number, label = Number, fill = Number)) +
    geom_text(check_overlap = TRUE, hjust = "bottom", size = 2) +
    geom_bar(stat="identity")

  return(p_country)
}

然后调用该函数并绘制图表:

graph <- country_function(export00,3)
graph