ggplot:值的范围,作为离散的线范围图

时间:2019-05-24 02:56:58

标签: r ggplot2

我想作图:

剧情1:我想要的情节

我的数据如下:

> head(ranges_example)
  labels Minimum Maximum error
1    One    -275    -240     1
2    Two    -265    -210     1
3  Three    -260    -215     1
4   Four    -273    -230     1
5   Five     NaN    -200     1
6    Six     NaN    -240     1

但是,可惜,我不得不通过修改我在中创建的图在illustrator中绘制该图:

情节2:我得到的情节

我是使用geom_linerange做到的,具体来说:

ggplot() +
geom_linerange(data = ranges_example, 
               mapping=aes(x = labels, ymin = Minimum, ymax = Maximum, 
                           lwd = 1, color = error, alpha = 0.5),
               position = position_dodge(width = 1)) +
scale_y_continuous(c(-240, -300)) +
coord_flip() 

图2足以满足 一次-在Illustrator中将其转换为图1可能需要15分钟-但我可能需要再制作一些图。

我之所以不删除position_dodge语句,是因为它只是将颜色混合在一起,就像这样:

我需要它们成为自己独特的颜色,以便于区分它们。不同的阴影意味着不同的事物,我需要能够轻松地区分和更改它们。

我如何才能开箱即用地创建更像图2的图?

1 个答案:

答案 0 :(得分:1)

ggplot() +
  geom_linerange(data = ranges_example %>% arrange(-error), 
                 mapping=aes(x = labels, ymin = Minimum, ymax = Maximum, 
                             lwd = 1, color = error)) +
  scale_y_continuous(c(-240, -300)) +
  scale_color_continuous(high = "lightgreen", low = "forestgreen") +
  coord_flip()  +
  theme_classic()

enter image description here

# Example data
ranges_example <- tribble(
  ~labels, ~Minimum, ~Maximum, ~error,
    "One",    -275,    -240,     1,
    "Two",    -265,    -210,     1,
    "One",    -285,    -215,     2,
    "Two",    -275,    -190,     2,
    "One",    -300,    -200,     3,
    "Two",    -290,    -180,     3)