在ggplot图中绘制两条线

时间:2017-08-13 16:14:46

标签: r plot ggplot2

我有一个数据框,如下所示:我试图将count和col.count绘制为ggplot图中的两行。我似乎无法做到这一点。感谢任何帮助。

month   count   col.count
=============================
16-05-May   1       1154688 
16-06-Jun   1       1092764 
16-07-Jul   2       1060445 
16-08-Aug   19      1092050 
16-09-Sep   173     1041299 
16-10-Oct   1469    1261100 
16-11-Nov   1819    1356139 
16-12-Dec   1263    1272486 
17-01-Jan   748     1170097 
17-02-Feb   684     1016672 

谢谢。

1 个答案:

答案 0 :(得分:2)

两列中的数字范围均为偏离幅度,因此可能需要使用y轴上的对数刻度进行绘图。以下是如何使用ggplot在R中的同一图表上绘制两个变量。

# first parse date string into Date object
df$date <- as.Date(df$month, "%y-%d-%b") # 16-05-May

library(ggplot2)
ggplot(df, aes(date)) + scale_y_log10() +
  geom_line(aes(y = count, colour = "red")) + 
  geom_line(aes(y = col.count, colour = "blue"))

如果您按照描述标准化 col.count 变量,那么您可以将它们绘制在一起,而不会使另一个变得完全平坦。

library(scales)
ggplot(df, aes(date)) + scale_y_continuous(labels = comma)  +
  geom_line(aes(y = count, colour = "red")) + 
  geom_line(aes(y = col.count/2000, colour = "blue"))

two plots on same graph

将两个图形显示为彼此堆叠的时间序列是另一种显示两个在y轴上具有非常不同范围的变量的方法。

require(gridExtra)
p1 <- ggplot(df, aes(date,count)) + geom_line(colour = "red") 
p2 <- ggplot(df, aes(date,col.count)) + geom_line(colour = "blue") 
grid.arrange(p1, p2, nrow=2)

Two graphs stacked on each other with same x-axis