2017-04-13 13 views
0

私はggplotを使用しています。私が望むプロットを得ることができました。 しかし伝説を追加しようとすると、何かが間違っていました。伝説にはさまざまな形、サイズ、線種があります。唯一正しい一致が色です。ここでr - 2つのdata.frames、凡例の間違った識別子を持つggplot

は、コードがシミュレートされたデータと、次のとおりです。ここで

library(ggplot) 
set.seed(5703) 
# DATA 1 
x1 <- seq(1, 100) 
y1 <- rnorm(mean = 50, sd = 10, length(x1)) 
df1 <- data.frame(x1, y1) 
head(df1) 

# DATA 2 
x2 <- seq(1, 100, 5) 
y2 <- rnorm(mean = 50, sd = 2, length(x2)) 
df2 <- data.frame(x2, y2) 
head(df2) 

# Plot: DATA 1 and DATA 2 
p101 <- ggplot (df1, aes(x = x1, y = y1)) + 
    geom_point(aes(color="Vals every 1sec - shape circle"), shape = 1, size = 4) + 
    geom_line (aes(color="Vals every 1sec - shape circle"), size = 0.5, linetype= "dotdash") + 
    geom_point(data= df2, aes(x = x2, y = y2, color="Vals every 5sec - shape: triangle & bigger, line: thicker"), shape= 2, size= 6) + 
    geom_line (data= df2, aes(x = x2, y = y2, color="Vals every 5sec - shape: triangle & bigger, line: thicker"), size = 1.25, linetype = "solid") + 
    scale_colour_manual("", values=c("Vals every 1sec - shape circle" = "#e66101", 
            "Vals every 5sec - shape: triangle & bigger, line: thicker" = "#5e3c99"))+ 
    theme(legend.position = c(0.7,0.1))+ 
    labs (title = "Graph Nr. 101", x = "Time [s]", y = "Values") 
p101 
# legend is mixed up, it is not showing the correct shapes and sizes for each data 

はイメージです。

ggplot df1 and df2 wrong legend

あなたは伝説上の両方のアイテムは、円と三角形を持っていることがわかります、同じサイズと線種。

多分プロットコードは完全に間違っているので、私は、任意の提案を開いて、あなたは伝説やテーマの変更で追加することが、これはあなたがしたい場所にあなたを取得する必要があります:)

+0

あなたのデータを識別子変数とともに「rbind」する方が簡単です。 'ライブラリ(dplyr); setNames(df2、c( 'x'、 'y'))、.id = 'line')%>%ggplot(aes(x = x、y = y、線種=線、色=線、形=線))+ geom_point()+ geom_line() 'ですが、好みに合わせて縮尺を掃除する必要があります。 – alistaire

+0

あなたの速い返事のためにおかげさまで@alistaireそれはコード化されているものにかなり似ているようです。いいね ! –

答えて

0

を学ぶために準備ができています。

library(ggplot) 
library(dplyr) 
set.seed(5703) 
# DATA 1 
x1 <- seq(1, 100) 
y1 <- rnorm(mean = 50, sd = 10, length(x1)) 
df1 <- data.frame(x = x1, y = y1, group = "A") 
head(df1) 

# DATA 2 
x2 <- seq(1, 100, 5) 
y2 <- rnorm(mean = 50, sd = 2, length(x2)) 
df2 <- data.frame(x = x2, y = y2, group = "B") 
head(df2) 

df <- bind_rows(df1, df2) 

# Plot: DATA 1 and DATA 2 
p101 <- ggplot (df, aes(x = x, y = y, color = group)) + 
    geom_line(aes(linetype = group), size = 0.5) + 
    geom_point(aes(shape = group), size = 4) 
+0

おかげで魅力的です! –

+0

私は、期待される結果を得るために、meltまたはbind_rowsを使ってたくさんのggplotsを見ました。私のコードで何が間違っていたのですか?私が明確に考えていなかったことを教えてください。すべての読書の提案?ありがとう –

関連する問題