美文网首页R作图收入即学习R
利用gghighlight包高亮你的图形

利用gghighlight包高亮你的图形

作者: 凯凯何_Boy | 来源:发表于2020-08-27 15:26 被阅读0次

    如何在利用ggplot高亮出你想要展示的数据呢?gghighlight包,快速解决你的问题~~

    准备R包

    安装gghighlight包
    library(tidyverse)
    library(gghighlight)
    theme_set(theme_bw())
    

    线图

    p <- ggplot(
      airquality,
      aes(Day, Temp, group = Month, color = factor(Month))
    ) +
      geom_line(size = 2) +
      labs(x = "Day of Month", y = "Temperature") +
      theme(legend.position = "top")+scale_color_igv()
    p
    
    图片.png

    OK,现在让我们高亮Temp列数值最大值大于93的线条,也就是说看看哪个月份的Temp值的最大值是大于93的

    p + gghighlight(max(Temp) > 93, label_key = Month)
    
    图片.png

    直方图

    ggplot(iris, aes(Sepal.Length, fill = Species)) +
      geom_histogram(bins = 30) +
      scale_fill_igv() 
    
    图片.png

    现在分面后背景都带上原有的三组的图形,将要展示的组高亮出来。

    ggplot(iris, aes(Sepal.Length, fill = Species)) +
      geom_histogram(bins = 30) +
      scale_fill_igv() +
      gghighlight() + 
      facet_wrap(~ Species)
    
    图片.png

    散点图

    df <- mtcars %>% mutate(name = row.names(.))
    df %>% 
      ggplot(aes(mpg, disp)) +
      geom_point(col = "darkred") +
      gghighlight(disp > 350 & disp <= 400,
                  unhighlighted_colour = alpha("steelblue", 0.4),
                  use_direct_label = TRUE,
                  label_key = name,
                  label_params = list(size = 5)) +
      geom_point(col = "darkred", size = 2.5) 
    
    图片.png

    条形图

    对于条形图的高亮,我想到了另一个包ggcharts,这个包里有也设置有图形高亮的参数
    我们这里使用biomedicalrevenue数据集如下,目标是筛选出revenue列大于40的值:

    data("biomedicalrevenue")
    revenue2018 <- dplyr::filter(biomedicalrevenue, year == 2018)
    #先取出大于40的值
    a <- subset(revenue2018,revenue > 40)
    #水平作图
    bar_chart(revenue2018, # 包含绘图数据的数据集
              company,  # 绘制条形图的因子列
              revenue,  # 绘制条形图的数据值
              # top_n = 10, # 条形图仅显示10个条形
              threshold = 0, # 设置条形图中y>40的数值显示
              bar_color = "purple", # 设置条形图的颜色
              highlight = a$company) # 设置需要强调显示的条形
    
    图片.png

    竖直作图用column_chart函数

    
    column_chart(revenue2018, # 包含绘图数据的数据集
              company,  # 绘制条形图的因子列
              revenue,  # 绘制条形图的数据值
              top_n = 10, # 条形图仅显示10个条形
              threshold = 0, # 设置条形图中y>40的数值显示
              bar_color = "purple", # 设置条形图的颜色
              highlight = a$company) # 设置需要强调显示的条形
         
    
    图片.png

    可以看到,数值的话X坐标轴上的标签没办法调角度,图片也不美观,当然也可以自己设置threshold参数,调整阈值使条形图的数目减少。ggcharts包不只可以画条形图,还可以画哑铃图,棒棒糖图等等,大家自行摸索吧~

    最后我们再用我们的主角gghighlight函数

    ggplot(revenue2018, aes(company, revenue)) +
      geom_col(fill = 'purple') +
      theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
      gghighlight(revenue > 40, label_key = name)+scale_y_continuous(expand = c(0,0))
    
    图片.png

    感觉还是使用gghiglight会更加友好,因为它支持ggplot语法习惯,可以使我们更加个性化的设置图形~~

    参考链接:https://www.datanovia.com/en/blog/gghighlight-easy-way-to-highlight-a-ggplot-in-r/

    相关文章

      网友评论

        本文标题:利用gghighlight包高亮你的图形

        本文链接:https://www.haomeiwen.com/subject/zhicsktx.html