11

私はまだRにかなり慣れていないので、答えが見つからないプロットの問題に直面しました。

私はこのようなデータフレームを持っています(はるかに大きいですが):

df <- data.frame(Treatment= rep(c("A", "B", "C"), each = 6),
                 LocA=sample(1:100, 18), 
                 LocB=sample(1:100, 18), 
                 LocC=sample(1:100, 18))

そして、Excelで作成されたこのようなドットプロットが必要です。それはまさに私が望むフォーマットです。各場所の各処理のドットプロットを並べて、複数の場所のデータを1つのグラフにまとめます。(ここに画像を投稿できなかったことをお詫びします。画像を投稿するには10の評判が必要です。)

ここに画像の説明を入力してください

ドットを色分けして、場所ごとにプロットを作成することは問題ありません。

ggplot(data = df, aes(x=Treatment, y=LocA, color = Treatment)) + geom_point() 

しかし、同じグラフに場所BとCを追加する方法がわかりません。

アドバイスをいただければ幸いです。

4

2 に答える 2

12

何人かが言及しているように、データを「溶かして」「長い」形式にする必要があります。

library(reshape2)
df_melted <- melt(df, id.vars=c("Treatment"))
colnames(df_melted)[2] <- "Location"

ggplot の専門用語では、治療のような異なるグループを持つことは、「回避」によって実現されます。通常、棒グラフのようなものについては、ただ言うことができますが、もう少し手動で指定する必要があるようですposition="dodge":geom_point

ggplot(data=df_melted, aes(x=Location, y=value, color=Treatment)) +
  geom_point(position=position_dodge(width=0.3))

ここに画像の説明を入力

于 2013-02-10T23:58:54.157 に答える
3

データの形を変える必要があります。ここで使用例reshape2

library(reshape2)
dat.m <- melt(dat, id.vars='Treatment')
library(ggplot2)
ggplot(data = dat.m, 
        aes(x=Treatment, y=value,shape = Treatment,color=Treatment)) + 
                  geom_point()+facet_grid(~variable)

ここに画像の説明を入力してください

が欲しいのでdotplot、格子解も提案します。この場合の方が適していると思います。

dotplot(value~Treatment|variable,
        groups = Treatment, data=dat.m,
        pch=c(25,19),
        par.strip.text=list(cex=3),
        cex=2)

ここに画像の説明を入力してください

于 2013-02-10T23:53:17.143 に答える