我已经绘制了一个条形图,现在我想添加一条曲线,通过每个条形的顶点,以便更清楚地播种变化趋势。
数据框的格式如下:
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()
但都失败了。你有什么主意吗?提前谢谢。
答案 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)
答案 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")
红线是使用stat_summary
在每组的最小值绘制的 - 正如您在底部写的那样。蓝线是每组的顶部(总和)。