2016-03-04 103 views
1
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」得到的凝聚比例尺較低,因此難以閱讀。任何人都可以請求解決這個問題?這個代碼也可以縮短嗎?ggplot有兩個Y軸

+3

Ggplot不支持兩個Y軸,因爲以使美學的曖昧尺度的映射(和它被認爲是不好的做法) –

回答

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 

現在,您可以映射變量valueykey彩色以得到相同的情節更容易:

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") 

enter image description here