添加一条连接每个条形顶点的线,以显示R中的趋势

时间:2016-01-23 13:08:56

标签: r plot

我已经绘制了一个条形图,现在我想添加一条曲线,通过每个条形的顶点,以便更清楚地播种变化趋势。

数据框的格式如下:

v1              v2
a               10
b               6
c               7
...

以下是我绘制条形码的代码:

ggplot(date_count, aes(V1,V2)) + geom_bar(stat = "identity")+  theme(axis.text.x  = element_text(angle=45, hjust = 1,vjust = 1)) +xlab("date") + ylab("Number of activity")

我尝试了+geom_line()geom_smooth()但都失败了。你有什么主意吗?提前谢谢。

2 个答案:

答案 0 :(得分:2)

假设您指的是顶部而不是底部,因为底部都是零。我们使X轴连续而不是离散,为了能够看到添加的线条,我们将条纹设为白色。

# input data in reproducible form   
Lines <- "V1 V2
a               10
b               6
c               7"
date_count  <- read.table(text = Lines, header = TRUE)

library(ggplot2)

n <- nrow(date_count)

ggplot(date_count, aes(x = 1:n, y = V2)) + 
    geom_bar(stat = "identity", fill = "white") +  
    theme(axis.text.x  = element_text(angle=45, hjust = 1, vjust = 1)) +
    xlab("date") + 
    ylab("Number of activity") +
    scale_x_continuous(breaks = 1:n, labels = date_count$V1) +
    geom_line() + 
    geom_smooth(lty = 2)

screenshot

答案 1 :(得分:1)

我对你的&#34;底点&#34;有点困惑。我假设你的意思是每个小组的最低点。

使用更大的数据样本重现会更容易。因此,我使用mtcars

我解释了&#34;底部&#34;作为这里的最小点

  aggregate(mpg ~ cyl , mtcars, function(x)min(x))
      cyl  mpg
    1   4 21.4
    2   6 17.8
    3   8 10.4

您可以通过以下方式生成绘图:

data(mtcars)
ggplot(mtcars, aes(x=cyl,y=mpg))+
      geom_bar(stat="identity")+ 
      stat_summary(fun.y=min ,geom="line",color="red")+
       stat_summary(fun.y=sum ,geom="line",color="blue")

![enter image description here

红线是使用stat_summary在每组的最小值绘制的 - 正如您在底部写的那样。蓝线是每组的顶部(总和)。