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)
ボーダーの太さを制御するにはどうすればよいですか?
ggplot2のバージョン2.0.0以降では、ポイントの境界線の太さを制御する引数があります。から NEWS.md
ファイル:
geom_point()は、図形21-25(#1133、@ SeySayux)の境界線の幅を制御するストロークの美しさを獲得します。サイズとストロークは加算されるため、サイズ= 5およびストローク= 5のポイントの直径は10mmになります。 (#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)
少しハック感がありますが、サイズの美的マッピングに設定されたドットの「background」セットに加えて、拡大ドットの境界に小さな定数を追加できます。定数を使用して、目的の境界線の幅を取得します。
また、グラフに凡例を表示するのを停止するには、サイズの凡例を無効にする必要があります...
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)
別の解決策は、Rでプロットを作成し、それを.svgファイルにエクスポートすることです。その後、ベクターグラフィックス編集ソフトウェア(Inkscapeなど)を使用して、線幅を変更できます。この方法は、データポイントが重複する場合に特に役立ちます。