13

以下のようにggplotでグラフを作りたいと思います。アイデアは、2 つのカテゴリ変数間の「パーセンテージ一致」をプロットすることです。点の大きさを変えることで簡単に近づけることができるのですが、こんな小さな円グラフが作れるのだろうか…

スコアの尺度としてポイントのサイズでこれをプロットするためのコード例。

temp <- data.frame(Exercise=c(1, 1, 1, 2, 2, 2), 
    Name=c(1, 2, 3, 1, 2, 3), Score=c(0.2, 0.5, 0.3, 0.9, 1.0, 0.6))
ggplot(temp) + geom_point(aes(Exercise, Name, size=Score))

このコードをどのように変更して、下の図に近いものにすることができますか?

サンプルチャート

4

2 に答える 2

7

点の形状としてプロットを使用するのは注意が必要です。ただし、facet_grid() を使用して問題を回避し、モックアップに非常に近づけることができます。

ggplot(temp) + 
  geom_bar(aes(x=1, y=Score), stat="identity") + 
  facet_grid(Exercise~Name) + 
  coord_polar(theta = "y") +
  scale_y_continuous(breaks = NULL) +
  scale_x_continuous(name = element_blank(), breaks = NULL)

ここに画像の説明を入力

于 2013-01-08T13:37:00.797 に答える
7

まず、元のデータ フレームを変更して、最初の 6 行に元のデータがscore含まれ、最後の 6 行に 1 から元のデータを引いたものが含まれるようにしますscoregroup次に、これら 2 つのグループのレベルを含む列を追加しました。

temp <- data.frame(Exercise=c(1, 1, 1, 2, 2, 2), 
                   Name=c(1, 2, 3, 1, 2, 3), Score=c(0.2, 0.5, 0.3, 0.9, 1.0, 0.6))
temp<-rbind(temp,temp)
temp$Score[7:12]<-1-temp$Score[1:6]
temp$group<-rep(c("poz","neg"),each=6)

coord_polar()barplot から円グラフを作成し、次にfacet_grid()6 つの小さなプロットを作成するために使用されます。theme()軸、ファセット ラベル、グリッド線を削除するために使用されます。

ggplot(temp,aes(x = factor(1),y=Score,fill=group)) + 
  geom_bar(width = 1, stat = "identity") + facet_grid(Exercise~Name)+
  coord_polar(theta = "y") +
  scale_fill_manual(values = c("black", "grey")) +
  theme_bw() + scale_x_discrete("",breaks=NULL) + scale_y_continuous("",breaks=NULL)+
  theme(panel.border=element_blank(),
        strip.text=element_blank(),
        strip.background=element_blank(),
        legend.position="none",
        panel.grid=element_blank())

ここに画像の説明を入力

于 2013-01-08T13:44:52.420 に答える