web-dev-qa-db-ja.com

ggplot2でレーダーチャートを生成する

再現性を容易にするために、 ここからダウンロードできます データ。その構造は次のとおりです。

> str(data)
'data.frame':   30 obs. of  4 variables:
 $ Count: num  -15.26 NaN NaN -7.17 -49.37 ...
 $ X1   : Factor w/ 1 level "Mean": 1 1 1 1 1 1 1 1 1 1 ...
 $ X2   : Factor w/ 10 levels "DC1","DC10","DC2",..: 1 1 1 3 3 3 4 4 4 5 ...
 $ X3   : Factor w/ 3 levels "SAPvsSH","SAPvsTD6",..: 1 2 3 1 2 3 1 2 3 1 ...

私はこのggplotチャートを実行します:

ggplot(data=data,  aes(x=X2, y=Count, group=X3, colour=X3)) + 
  geom_point(size=5) + 
  geom_line() + 
  xlab("Decils") + 
  ylab("% difference in nº Pk") + 
  ylim(-50,25) + ggtitle("CL")  + 
  geom_hline(aes(yintercept=0), lwd=1, lty=2) + 
  scale_x_discrete(limits=c(orden_deciles))

この結果で:

enter image description here

このグラフは、SAPを尊重するSHとTD6(それぞれ赤と緑の色で水平の黒い線)と、SHを尊重するTD6(この場合も水平の黒い線で表されますが)の違いのパーセンテージを表しています。現在は青色です)。私は10個の変数を採用しました:DC1:DC10

このチャートをレーダーチャートに変換したいggradarまたはggRadarを使用しようとしましたが、失敗しました。このようなものは素晴らしいでしょう:

enter image description here

前の画像の赤と青の両方の線の間に配置された円のように、水平の黒い線は完全に円形である必要があります。理想的には、DC1は時計回りに北向きに配置する必要があります。

何かアイデアや提案はありますか?

5
antecessor

@DJackのおかげで、+ coord_polar()を追加した結果をここに投稿します。

enter image description here

これが最終的なコードです。

ggplot(data=data,  aes(x=X2, y=Count, group=X3, colour=X3)) + 
  geom_point(size=5) + 
  geom_line() + 
  xlab("Decils") + 
  ylab("% difference in nº Pk") + 
  ylim(-50,25) + ggtitle("CL")  + 
  geom_hline(aes(yintercept=0), lwd=1, lty=2) + 
  scale_x_discrete(limits=c(orden_deciles)) +
  coord_polar()
3
antecessor

https://www.ggplot2-exts.org/ggradar.html と呼ばれるレーダー/スパイダーチャートを作成するためのggplot拡張機能があります

奇妙な理由で、データが整然とした/長い形式ではなく、幅の広いものであることが期待されています。

2
Holger Brandl