2017-10-29 10 views
0

私は「グリッド」構造のデータを持っており、グループ変数に従って特定のポイントを結びたいと思っています。 geom_line()これを達成することができます(下記参照)が、私はそれらの線を湾曲させたいです。これはどうすればできますか? geom_curve()は、この特定のデータ形式と互換性がないようです。ありがとうございました。インスピレーションのための[こちら]グループ美学を使用して `geom_line()`を曲線化しました

df = data.frame(
x = factor(c(1,1,2,2)), 
y = factor(c(1,2,1,2)), 
group = c("A","A","B","B")) 

df %>% 
ggplot(aes(x = x, y = y)) + 
geom_point() + 
geom_line(aes(group = group)) 
+0

チェック(https://stackoverflow.com/questions/33290259/r-ggplot-multiple-series-curved-line)。私はあなたのデータを効果的にスプラインすることはできませんでした。 – csgroen

+0

あなたが必要とするかもしれない 'GGalt'パッケージからの' geom_xspline'があります。 –

答えて

1
# A "toy" data set  
df1 = data.frame(
x = factor(c(1,1,2,2,3,3)), 
y = factor(c(1,2,1,2,1,2)), 
group = c("A","A","B","B","C","C")) 

library(ggplot2) 
library(dplyr) 

# Create a matrix where on each row there are the coordinates 
# of the starting and ending points 
# One row for each group 
df1 %>% group_by(group) %>% 
mutate(X1=x[1], X2=x[1], Y1=y[1], Y2=y[2]) -> df2 
(df2 <- df2[seq(1,nrow(df2),2),c("X1","X2","Y1","Y2")]) 
# A tibble: 3 x 4 
#  X1  X2  Y1  Y2 
# <fctr> <fctr> <fctr> <fctr> 
# 1  1  1  1  2 
# 2  2  2  1  2 
# 3  3  3  1  2 

ggplot() + 
geom_point(data=df1, aes(x=x, y=y)) + 
geom_curve(data=df2,aes(x=X1, y=Y1, xend=X2, yend=Y2), curvature=.5) 

enter image description here

関連する問題