2

例の MWE を使用しgeom_polygonて svg ファイルを生成します。

ids <- factor(c("1.1", "2.1", "1.2", "2.2", "1.3", "2.3"))

values <- data.frame(
  id = ids,
  value = c(3, 3.1, 3.1, 3.2, 3.15, 3.5)
)

positions <- data.frame(
  id = rep(ids, each = 4),
  x = c(2, 1, 1.1, 2.2, 1, 0, 0.3, 1.1, 2.2, 1.1, 1.2, 2.5, 1.1, 0.3,
  0.5, 1.2, 2.5, 1.2, 1.3, 2.7, 1.2, 0.5, 0.6, 1.3),
  y = c(-0.5, 0, 1, 0.5, 0, 0.5, 1.5, 1, 0.5, 1, 2.1, 1.7, 1, 1.5,
  2.2, 2.1, 1.7, 2.1, 3.2, 2.8, 2.1, 2.2, 3.3, 3.2)
)

# Currently we need to manually merge the two together
datapoly <- merge(values, positions, by=c("id"))

(p <- ggplot(datapoly, aes(x=x, y=y)) + geom_polygon(aes(fill=value, group=id)) + 
  geom_path(color="white"))
dev.copy(svg, "Polygon.svg")
dev.off()

これにより、わずかな欠点が 1 つありますが、うまく svg ファイルが生成されます。画像のサイズを大きくすると (予想どおり)、「境界線」が大きくなります。私がここで見ることができるもの (ダイナミック SVG グラフィックの一定の境界線) から、これは svg ファイルの通常の動作です。問題は、これらのパスを領域ではなく「境界」または「境界」として解釈するため、すべてのズーム レベルで幅が一定である必要があることです。

ポリゴンの内部で svg のようなスケーラビリティを可能にするが、パス/境界線/境界線のゼロ次元幅を尊重する R から画像を生成する最良の方法は何ですか?

この質問のコンテキストは、オーストラリアの選挙区に基づいてマップを作成することです。(ggplot2 を使用したオーストラリアの選挙区のマッピングを参照してください。)著者が示唆するサブセット化とは別に、小さな区画(たとえばシドニー周辺)にズームインできるファイルを作成したいと思います。と互換性のあるソリューションを好みますが、これを行うためのまったく新しい方法の提案を歓迎しggplot2ます。

4

0 に答える 0