使用ggplot根据x轴上的特定位置突出显示该值

时间:2020-10-16 05:34:15

标签: r ggplot2

我的目标是用一种颜色突出StockValue值大于0.5,并使用另一种颜色用ggplot突出显示2002、2003、2012和2015年的StockValue。我成功地突出显示了高于0.5的值,但无法解决第二个问题。

我尝试过:

require(ggplot2)
require(reshape2)

df <- data.frame(Year = c(2001:2015), 
      StockValue = c(0.93, 0.32, 0.24, 0.53, 0.43, 0.53, 0.43, 0.58, 0.31, 0.52, 0.49, 0.27,0.34,0.48, 0.45))

df %>% ggplot(aes(x=Year,y=StockValue)) + geom_point(color = 'blue', shape = 18) + theme(legend.position="none") +  ggtitle("Stock Value")

highlight <- df %>% filter(StockValue>=0.5)

df %>% ggplot(aes(x=Year,y=StockValue)) + geom_point(color = 'blue', shape = 18, size = 2.3) + geom_point(data=highlight, aes(x=Year,y=StockValue), color='red', shape=18) + theme(legend.position="none")

enter image description here

1 个答案:

答案 0 :(得分:2)

最简单的方法可能是先创建要使用的数据。像这样:

df %>% 
  mutate(above = StockValue>=.5) %>% 
  mutate(year = Year %in% c(2002,2003,2012,2015)) %>% 
  mutate(comb = paste(above,year)) %>% 
  ggplot(aes(Year,StockValue,color = comb)) + 
  geom_point() + 
  scale_color_manual(values = c('blue','violet','black')) + 
  theme(legend.position = 'none')

enter image description here