代码之家  ›  专栏  ›  技术社区  ›  Mus mzuba

我怎样才能用自己想要的颜色让一个传说出现在我的情节上?[复制品]

  •  2
  • Mus mzuba  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我有一个情节,我想包括一个传说。

    我尝试过一些向其他人提供的解决方案,但在我的案例中,问题是我不能使用我想要的颜色,因为解决方案需要我放置 colour 在内部 aes() 它产生了与我指定的颜色不同的颜色。

    我相信解决办法就在 scale_fill_manual 但是我不能正确地实现它。

    因此,我如何包括一个传奇和保持相同的线颜色?

    我的数据帧:

    grouped <- structure(list(date = c("2018-07-16", "2018-07-17", "2018-07-18", 
    "2018-07-19", "2018-07-20", "2018-07-21", "2018-07-22", "2018-07-23", 
    "2018-07-24", "2018-07-25", "2018-07-26", "2018-07-27", "2018-07-28", 
    "2018-07-29", "2018-07-30", "2018-07-31"), homepage_opens = c(5L, 
    0L, 0L, 3L, 1L, 2L, 0L, 1L, 0L, 2L, 5L, 0L, 0L, 0L, 0L, 0L), 
        sitewide_opens = c(39L, 34L, 19L, 62L, 46L, 44L, 16L, 51L, 
        25L, 66L, 75L, 0L, 0L, 0L, 0L, 0L), chats_started = c(10L, 
        16L, 9L, 8L, 13L, 13L, 5L, 13L, 4L, 8L, 11L, 0L, 0L, 0L, 
        0L, 0L), chats_completed = c(7L, 13L, 8L, 4L, 5L, 9L, 6L, 
        13L, 2L, 7L, 5L, 0L, 0L, 0L, 0L, 0L)), class = c("tbl_df", 
    "tbl", "data.frame"), row.names = c(NA, -16L))
    

    我的阴谋代码:

    ggplot(grouped) +
      geom_line(aes(x = date, y = sitewide_opens, group = 1),
                linetype = "dashed",
                colour = "forestgreen",
                alpha = 0.5) +
      geom_line(aes(x = date, y = homepage_opens, group = 1),
                colour = "blue") +
      geom_vline(aes(xintercept = 8),
                 linetype = 2,
                 colour = "black") +
      geom_text(aes(x = date, y = homepage_opens, label = homepage_opens),
                hjust = -0.15,
                vjust = -1.5,
                size = 3,colour = "black") +
      geom_text(aes(x = date, y = sitewide_opens, label = sitewide_opens),
                hjust = -0.15,
                vjust = -1.5,
                size = 3,
                colour = "black") +
      labs(title = "Title",
           x = "Date",
           y = "Count") +
      theme(plot.title = element_text(size = 25,
                                      face = "bold",
                                      colour = "black"),
            legend.position = "top",
            panel.grid.minor.x = element_blank(),
            panel.grid.major.x = element_blank(),
            axis.text = element_text(colour = "black"))
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   AlienDeg    6 年前

    你几乎是对的,你需要调整比例,但颜色不是填充(因为你用颜色来设置线条的颜色,用填充来设置填充对象的颜色)。这里是解决方案。

    ggplot(分组)+
    geom线(aes(x=日期,y=站点宽度,colour=“站点宽度打开”,group=1)
    linetype=“虚线”,
    
    α= 0.5)+
    geom线(aes(x=日期,y=主页打开,group=1,
    colour=“主页打开”))+
    地平面(aes(xintercept=8)
    线型= 2)+
    geom_文本(aes(x=日期,y=主页打开,label=主页打开)
    =,
    V正义=1.5,
    尺寸=3)
    geom_文本(aes(x=日期,y=SiteWide_打开,label=SiteWide_打开)
    =,
    V正义=1.5,
    尺寸=3,colour=“黑色”)。+
    主题(legend.position=“top”,
    legend.title=元素\blank(),
    panel.grid.minor.x=元素_blank(),
    panel.grid.major.x=元素_blank(),
    axis.text=元素_text(colour=“black”))+
    scale_colour_manual(values=c(“sitewide openses”=“forestgreen”,“homepage openses”=“blue”),labels=c(“sitewide openses”,“homepage openses”))
    < /代码> 
    
    

    对象。这是解决方案。

    ggplot(grouped) +
      geom_line(aes(x = date, y = sitewide_opens, colour = "Sitewide opens",group = 1),
                linetype = "dashed",
    
                alpha = 0.5) +
      geom_line(aes(x = date, y = homepage_opens, group = 1,
                    colour = "Homepage opens")) +
      geom_vline(aes(xintercept = 8),
                 linetype = 2) +
      geom_text(aes(x = date, y = homepage_opens, label = homepage_opens),
                hjust = -0.15,
                vjust = -1.5,
                size = 3) +
      geom_text(aes(x = date, y = sitewide_opens, label = sitewide_opens),
                hjust = -0.15,
                vjust = -1.5,
                size = 3,colour = "black") +
      theme(legend.position = "top",
            legend.title=element_blank(),
            panel.grid.minor.x = element_blank(),
            panel.grid.major.x = element_blank(),
            axis.text = element_text(colour = "black")) + 
      scale_colour_manual(values=c("Sitewide opens"="forestgreen", "Homepage opens"="blue"),                                                 labels=c("Sitewide opens", "Homepage opens"))
    

    enter image description here

        2
  •  1
  •   Tino    6 年前

    无论何时使用 ggplot2 你应该喂它 长的 数据。这使得添加更多的行、文本或其他内容更加容易(正如@musthedataguy已经提到的那样)。因此,这里 GGPROTT2 -样式示例(进一步,将日期转换为它是什么…日期- GGPROTT2 知道怎么处理它,你不需要 group ):

    grouped_long <- tidyr::gather(data = grouped, key = key, value = value, -date)
    
    ggplot(data = subset(grouped_long, key %in% c("homepage_opens", "sitewide_opens")),
           aes(x = as.Date(date), 
               y = value, 
               label = value,
               color = key, 
               lty = key)) +
      geom_line() +
      geom_text(color = "black") +
      geom_vline(xintercept = 8, lty = 2) +
      scale_linetype_manual(values = c(sitewide_opens = 2,
                                       homepage_opens = 1)) + 
      scale_color_manual(values = c(sitewide_opens = "forestgreen",
                                    homepage_opens = "blue"))