【问题标题】:How to highlight a single point, which is a row, of a ggplot?如何突出显示ggplot的单个点,即一行?
【发布时间】:2021-10-09 20:19:12
【问题描述】:

我需要从 ggplot 中突出显示 geom_point 图中的一个点。由于它是一个广泛的数据集,因此我使用以下代码对需要分析的行进行了切片,这给了我:

jpp1 <- my_data %>% slice(52:51)

输出:

Date   equity company  press    Categorization  Year Month Event
  <chr>   <dbl> <chr>    <chr>    <chr>          <dbl> <chr> <dbl>
1 05/18…   162. JPMorgan States … Negative        2021 May       1
2 05/19…   161. JPMorgan NA       NA                NA NA       NA

为了分析这些信息,我散了一个ggplot,代码如下:

ggplot(data = jpp1) + geom_point(mapping = aes(equity, Date))

我需要突出显示第 52 行,即 y 轴上的日期 05/18/21。我已经尝试过使用 gghighlight,但我无法做到。

【问题讨论】:

  • 是否会在您想要的行上放置一个标志(即,只需添加一个带有 1 的额外列),然后将其添加到颜色美学中对您有用吗?
  • mapping = aes(equity, Date, color = replace(rep(0, NROW(jpg1)), 52, 1))

标签: r ggplot2 highlight geom-point


【解决方案1】:

使用下面的示例数据集df,它是您数据的一部分,我们可以添加假行:

  1. 数据操作(日期应该是我使用lubridate包的日期
  2. 添加一列 highlight 或普通列,具体取决于您要突出显示的内容。
  3. 定义你的颜色my_colors
  4. geom_pointgeom_point(size = 3, aes(colour = highlight))
  5. scale_color_manual分配颜色
library(tidyverse)
library(lubridate)

jpp1 <- df %>% 
    mutate(Date = mdy(Date)) %>% 
    mutate(highlight = ifelse(Date == "2021-05-18", "highlight", "normal"))
    
my_colors <- c("highlight" = "red", "normal" = "black")

ggplot(data = jpp1, aes(x = Date, y = equity)) +
    geom_point(size = 3, aes(colour = highlight)) +
    scale_color_manual("Status", values = my_colors) 

数据:

df <- tribble(
~Date,   ~equity, ~company,  
"05/18/21",   162., "JPMorgan", 
"05/19/21",   161., "JPMorgan", 
"05/20/21",   160., "JPMorgan", 
"05/21/21",   159., "JPMorgan")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-06
    • 2021-01-17
    • 1970-01-01
    • 2019-08-25
    • 2015-09-22
    • 2022-08-20
    • 1970-01-01
    相关资源
    最近更新 更多