dataframe:- df
Period v1 v2
1 2002 1 1
2 2003 5 12
3 2004 9 28
4 2005 16 66
5 2006 23 115
Code:-
ggplot() + geom_line(data=df, aes(x=Period, y=v1, group=1, color="v1")) +
geom_line(data=df, aes(x=Period, y=v2, group=1, color="v2"))+ theme(legend.title=element_blank()) + scale_y_continuous(name="Count") +
geom_point(data=df, aes(x=Period, y=v1, group=1)) + geom_point(data=df, aes(x=Period, y=v2, group=1))
我正在绘制两个线图和点。我遇到的问题是值的增加幅度不同,因此其中一个线图“v1”会在下端缩小。规模因而难以阅读。任何人都可以请求解决这个问题?这段代码也可以缩短吗?
答案 0 :(得分:1)
ggplot2
的想法是将数据转换为所谓的长格式,其中每个观察占据一行:
library(tidyr)
plot_data <- gather(df, key, value, -Period)
head(plot_data)
## Period key value
## 1 2002 v1 1
## 2 2003 v1 5
## 3 2004 v1 9
## 4 2005 v1 16
## 5 2006 v1 23
## 6 2002 v2 1
现在,您可以将变量value
映射到y
和key
颜色,以便更轻松地获得相同的情节:
ggplot() + geom_line(data=plot_data, aes(x=Period, y=value, colour = key)) +
theme(legend.title=element_blank()) +
geom_point(data=plot_data, aes(x=Period, y=value)) +
scale_y_continuous(name="Count")
我不确定数据越来越难以理解你究竟是什么意思。也许,你想要一个对数y轴?
ggplot() + geom_line(data=plot_data, aes(x=Period, y=value, colour = key)) +
theme(legend.title=element_blank()) +
geom_point(data=plot_data, aes(x=Period, y=value)) +
scale_y_log10(name="Count")