2017-08-13 173 views
1

我有一个数据框,如下所示:我想绘制count和col.count作为ggplot图中的两条线。我似乎没有得到这个权利。感谢任何帮助。在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

我也试过log(count)和log(col.count)。更多地看比实际计数值的相对差异。 – Sree

回答

1

两列中的数字范围都是关闭的,因此可能需要在y轴上使用对数刻度进行绘图。以下是如何在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")) 

使用ggplot在同一个图形绘制两个变量如果规范化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

+0

第一个解决方案是我一直在寻找的。我还通过除以col.count/2000来进行比例调整。这样,我可以让它工作。非常感谢你。 – Sree