2

この質問の回答を参照し、追加の質問があります。

私は以下のようにコードを変更しました:

library(ggplot2)

ids <- letters[1:2]

# IDs and values to use for fill colour
values <- data.frame(
  id = ids,
  value = c(4,5)
)

# Polygon position
positions <- data.frame(
  id = c(rep(ids, each = 10),rep("b",5)),
  #     shape      hole         shape        hole
  x = c(1,4,4,1,1, 2,2,3,3,2,   5,10,10,5,5, 6,6,7,7,6, 8,8,9,9,8),
  y = c(1,1,4,4,1, 2,3,3,2,2,   5,5,10,10,5, 6,7,7,6,6, 8,9,9,8,8)
)

# Merge positions and values
datapoly <- merge(values, positions, by=c("id"))

chart <- ggplot(datapoly, aes(x=x, y=y)) + 
  geom_polygon(aes(group=id, fill=factor(value)),colour="grey") +
  scale_fill_discrete("Key")

そして、次の出力を提供します。

ここに画像の説明を入力してください

2つの色付きのボックスを通る線がありますが、私はそれがあまり好きではありませんが、どうすればそれを削除できますか?ありがとう。

4

2 に答える 2

7

何年も前に穴を描くために私が思いついた解決策は、各穴の後にx、y座標が同じ場所に戻るようにすることです。これにより、線が周りをブーンと鳴り、他のポリゴンと交差し、回転数アルゴリズムが埋めない(または埋めるべきでないときに埋める)空き領域が残るのを防ぎます。

したがって、最初の27ポイントが外側であるデータセットがあり、5、6、および7ポイントの3つの穴がある場合は、次のような新しいデータセットを作成します。

newdata = data[c(1:27,28:32,27,33:38,27,39:45,27),] # untested

各穴の後でポイント27に戻る方法に注意してください。あなたの穴が時計回りの方向に行くことを確認してください(私は思います)。

次に、newdataを使用して描画しますが、輪郭を描画するのではなく、塗りつぶしのみを使用します。アウトラインが必要な場合は、後で追加します(リングIDでグループ化された元のデータを使用)

穴への出線が入線とまったく同じように描かれていない非常に細いアーティファクトが発生することがありますが、ほとんど目立ちません。ブレゼンハムのせい。

于 2012-08-21T08:50:59.277 に答える
2

これを試してみてください

ggplot(datapoly, aes(x=x, y=y)) +
  geom_polygon(aes(group=id, fill=factor(value))) +
  scale_fill_discrete("Key")

ここに画像の説明を入力してください

于 2012-08-21T02:36:47.933 に答える