90

ggplot を使用する場合、次のshapeように 21-25 に設定して、内部 ( fill) と境界線 ( col) の色を個別に設定した形状を取得できます。

df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(fill=id, size=id), colour="black", shape=21)

ここに画像の説明を入力

ただし、シェイプの境界線の太さを絶対に設定するか、美的マッピングとして設定するかを制御する方法がわかりません。値を設定すると、美学lwdがオーバーライドされることに注意してください。size

ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(fill=id, size=id), colour="black", shape=21, lwd=2)

ここに画像の説明を入力

境界線の太さを制御するにはどうすればよいですか?

4

3 に答える 3

126

ggplot2のバージョン 2.0.0 以降では、ポイントの境界線の太さを制御する引数があります。NEWS.mdファイルから:

geom_point() は、シェイプ 21 ~ 25 の境界線の幅を制御するストロークの美学を取得します (#1133、@SeySayux)。サイズとストロークは加算されるため、サイズが 5 でストロークが 5 のポイントの直径は 10 mm になります。(#1142)

したがって、これに対する正しい解決策は次のとおりです。

df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(fill=id, size=id), colour="black", shape=21, stroke = 2)

出力

于 2015-12-18T18:23:31.043 に答える
19

少しハックな感じがしますが、美的マッピングに設定されたサイズのドットの「背景」セットと、ドットの境界を拡大するための小さな定数を追加できます。定数をいじって、希望のボーダー幅を取得します。

サイズの凡例を無効にして、グラフに凡例が表示されないようにする必要もあります...

ggplot(df, aes(x=x, y=y)) + 
  geom_point(aes(size=id+0.5), colour="black" , show_guide = FALSE )+
  scale_size( guide = "none" )+
  geom_point(aes(fill=id, size=id), colour="black", shape=21)

ここに画像の説明を入力

于 2013-10-21T23:51:39.013 に答える
1

別の解決策は、R でプロットを作成し、それを .svg ファイルにエクスポートすることです。線幅は、ベクトル グラフィックス編集ソフトウェア (Inkscape など) を使用して変更できます。この方法は、データ ポイントが重複している場合に特に役立ちます。

于 2015-03-03T06:44:39.387 に答える