【问题标题】:How to change the geom_point appearance?如何改变 geom_point 的外观?
【发布时间】:2019-07-21 11:31:11
【问题描述】:

使用这些数据:

Data2 <- structure(list(year = c(2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 
2014L, 2015L, 2016L, 2017L, 2018L, 2019L, 2008L, 2009L, 2010L, 
2011L, 2012L, 2013L, 2014L, 2015L, 2016L, 2017L, 2018L, 2019L, 
2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2015L, 2016L, 
2017L, 2018L, 2019L), variable = c("var1", "var1", "var1", "var1", 
"var1", "var1", "var1", "var1", "var1", "var1", "var1", "var1", 
"var2", "var2", "var2", "var2", "var2", "var2", "var2", "var2", 
"var2", "var2", "var2", "var2", "var3", "var3", "var3", "var3", 
"var3", "var3", "var3", "var3", "var3", "var3", "var3", "var3"
), frequency = c(1L, 0L, 0L, 0L, 1L, 1L, 3L, 4L, 3L, 10L, 9L, 
0L, 0L, 1L, 0L, 0L, 3L, 2L, 2L, 3L, 8L, 9L, 12L, 3L, 0L, 0L, 
0L, 0L, 0L, 2L, 1L, 0L, 1L, 2L, 4L, 0L)), class = "data.frame", row.names = c(NA, 
-36L))

我尝试制作这样的情节:

library(ggplot2)
ggplot(Data2, aes(year, variable, size = frequency, color = variable)) +
    geom_point()+ theme(text = element_text(size = 18))

但是我对这个图表的视图有一些问题: 如何将 x 轴更改为拥有所有年份,使 geom_point 变大(我尝试了大小,但它是一个固定选项,所有圆圈都相同)以及从 1 而不是 0 cicles(如果存在)的频率显示?

【问题讨论】:

  • 要显示所有年份,在theme 中,您可以旋转x 轴标签axis.text.x = element_text(angle = 60, hjust = 1)。至于点的大小,它适用于我。

标签: r ggplot2


【解决方案1】:

让岁月显现的一个简单方法是将它们转化为因素。至于从一个开始你的尺寸比例:我不确定你是要删除代表 0 的点,还是只是从 1 开始比例尺。下面的代码应该让你知道如何做,或者两者兼而有之。要从绘图中删除 0,最简单的方法可能是将它们变成 NA,它不会被绘制(它会发出警告,但没关系)。您可以使用 scale_size_continuous 更改您的大小比例中断:

Data2 %>% 
    mutate(frequency = ifelse(frequency == 0, NA, frequency),
           year = as.factor(year)
           ) %>%
    ggplot(aes(year, size = frequency, variable, color = variable)) +
    geom_point() + 
    theme(text = element_text(size = 18)) +
    scale_size_continuous(breaks = c(1, 4, 8, 12))

【讨论】:

    【解决方案2】:

    当轴标签没有全部显示出来时,或者当它们被叠加时,一个标准的技巧是旋转它们。在这种情况下,我会将 x 轴标签旋转 45 度。

    library(ggplot2)
    
    ggplot(Data2, aes(year, variable, 
                      size = frequency, color = variable)) +
      geom_point() +
      theme(text = element_text(size = 18),
            axis.text.x = element_text(angle = 45, hjust = 1))
    

    【讨论】:

      【解决方案3】:

      我有一个不为 0 频率的快速而肮脏的解决方案:Data2[Data2==0] &lt;- NA 或者仅用于频率:

      library(data.table)
      setDT(Data2)
      Data2[frequency==0, frequency:= NA] 
      

      为了拥有适当的年份:

      Data2$year = as.Date(strptime(Data2$year, "%Y"))
      
      ggplot(Data2, aes(year, variable, size = frequency, color = variable)) +
        geom_point()+ 
        theme( axis.text.x = element_text(angle = 60, hjust = 1) )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-04
        • 2012-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-26
        • 2014-11-23
        相关资源
        最近更新 更多