我想将两个时间序列的数据绘制在一起。 x轴将是日期,y轴将是系列1的折线图,而磅值将基于系列2的数值进行缩放。但是,当系列2 = 0时,我希望ggplot能够根本不显示任何点。我尝试将点大小的范围设置为最小0,但是它仍显示点的值为0。
以下代码可重现该问题:
Dates = c("2015-05-01", "2015-05-02", "2015-05-03", "2015-05-04", "2015-05-05", "2015-05-06")
Dates = as.Date(Dates)
Series1 = c(0,2,8,5,3,1)
Series2 = c(0,0,5,0,10,5)
df = data.frame(Dates, Series1, Series2)
ggplot(data = df)+
geom_line(aes(x=Dates, y = Series1))+
geom_point(aes(x=Dates, y = Series1, size = Series2))+
scale_size_continuous(range = c(0, 5))
当Series2 = 0时,如何使ggplot2不创建点,但仍显示该行? 我还尝试将Series2的NA替换为0,但这导致绘图失败。
答案 0 :(得分:3)
您可以将最小值更改为负数:
ggplot(data = df) +
geom_line(aes(x = Dates, y = Series1))+
geom_point(aes(x = Dates, y = Series1, size = Series2))+
scale_size_continuous(range = c(-1, 5))
如果您不希望图例包含0,则可以添加breaks
:
scale_size_continuous(range = c(-1, 5), breaks = seq(2.5, 10, 2.5))
答案 1 :(得分:1)