2017-01-25 18 views
4

ggplotは極座標を使用して線プロットを作成するとき、スパイラルに折り返すのではなく、最高と最低のx値(DecJan)の間にギャップを残します。どのように私はラインを継続し、ギャップを閉じることができますか?極座標の結合間隔ggplotプロット

特に、私はx軸として月を使用したいが、1つのループする行に複数年のデータをプロットする。

Reprex:

library(ggplot2) 

# three years of monthly data 
df <- expand.grid(month = month.abb, year = 2014:2016) 
df$value <- seq_along(df$year) 

head(df) 
## month year value 
## 1 Jan 2014  1 
## 2 Feb 2014  2 
## 3 Mar 2014  3 
## 4 Apr 2014  4 
## 5 May 2014  5 
## 6 Jun 2014  6 

ggplot(df, aes(month, value, group = year)) + 
    geom_line() + 
    coord_polar() 

spiral plot with gaps

+0

[関連](http://stackoverflow.com/questions/41603341/spiral-barplot-using-ggplot-coord-polar-condegram/41610220#41610220)。 – Axeman

答えて

4

ここでやや-ハックオプションです:

# make a data.frame of start values end values should continue to 
bridges <- df[df$month == 'Jan',] 
bridges$year <- bridges$year - 1 # adjust index to align with previous group 
bridges$month <- NA # set x value to any new value 

     # combine extra points with original 
ggplot(rbind(df, bridges), aes(month, value, group = year)) + 
    geom_line() + 
    # close gap by removing expansion; redefine breaks to get rid of "NA/Jan" label 
    scale_x_discrete(expand = c(0,0), breaks = month.abb) + 
    coord_polar() 

spiral plot without gaps

が明らかに余分なデータポイントを追加すると、しかし、理想的ではない、ので、多分より洗練された答えが存在します。

+1

連続したスケールでプロットすると、余分なデータポイントがなぜ概念的に必要なのかがより明確になるはずです: 'ggplot(df、aes(as)(value)、group = year))+ geom_line()+ coord_polar ()+ scale_x_continuous(制限= c(0、12)) 'です。 'geom_line'は外挿法ではありません。私の意見では、ggplot2はこれを別々の縮尺で描いている間違いです。デカルト座標ではどうしていないか注意してください。 – Roland

+0

[私の解答](http://stackoverflow.com/a/41098075/3817004)の変種2をご覧ください。それはPOSIXctに数ヵ月後に 'scale_x_date()'を使います。 – Uwe

関連する問題