私は、位置データとその位置データの値を取り込んで、それをgeom_tileでプロットするコードを持っています。プロットの行列サイズは、データ項目からデータ項目まで一定ではなく、幾何学的タイルの各「セル」は、不一致なサイズの追加の行列を含む可能性があります。私が現在行っているコードは、追加の詳細セルが2x2ですが、他のサイズに適応しようとすると失敗してしまいます。たとえば、5x5です。このコードでは、追加の詳細セルのサイズだけでなく、主要なxとyの距離(x = c(0,2,4,6,8)の主な距離は2など)をユーザが入力する必要があります。以下のイメージは、2x2の追加ディテール・セルで成功したgeom_tileです。
可変サイズのgeom_tileプロット
これを生成したコードは次のとおりです。
x <- c(0,0,4,3,3,5,5)
y <- c(0,4,0,3,5,3,5)
#USER INPUT
major_x_dist <- 4 #x distance between the major data points
major_y_dist <- 4 #x distance between the major data points
division_cells <- as.character("2x2") #size of the cell containing additional detail
#######################################
if (division_cells == "2x2") {
div_cells <- 2
} else if (division_cells == "3x3")
{ div_cells <- 3
} else if (division_cells == "4x4")
{ div_cells <- 4
} else if (division_cells == "5x5")
{ div_cells <- 5
} else
{ div_cells <-1
}
data_width <- ifelse(x%% major_x_dist==0, major_x_dist, major_x_dist/div_cells)
data_height <- ifelse(y%% major_y_dist==0, major_y_dist, major_y_dist/div_cells)
data_val <- sample(0:100, 7)
alldata <-data.frame(x, y, data_width, data_height, data_val)
ggplot(data= alldata, aes(x=x, y=y, width=data_width, height=data_height)) +
geom_tile(fill = "white", color="black") +
geom_text(aes(label = data_val), colour="black") +
coord_fixed()
5x5の追加セルに対する試行された適応は下記の通りです。全体的なマトリックスのサイズは、データポイント間の主要な距離は、追加の詳細のセルの位置、及び追加の詳細セルのサイズは2×2の追加の詳細細胞と連携した溶液から全て異なること
x <- c(0,0,0,2,2,2,4,4,4,-0.8,-0.8,-0.8,-0.8,-0.8,-0.4,-0.4,-0.4,-0.4,-0.4,0,0,0,0,0.4,0.4,0.4,0.4,0.4,0.8,0.8,0.8,0.8,0.8)
y <- c(0,2,4,0,2,4,0,2,4,3.2,3.6,4,4.4,4.8,3.2,3.6,4,4.4,4.8,3.2,3.6,4.4,4.8,3.2,3.6,4,4.4,4.8,3.2,3.6,4,4.4,4.8)
#USER INPUT
major_x_dist <- 2 #x distance between the major data points
major_y_dist <- 2 #x distance between the major data points
division_cells <- as.character("5x5") #size of the cell containing additional detail
#######################################
if (division_cells == "2x2") {
div_cells <- 2
} else if (division_cells == "3x3")
{ div_cells <- 3
} else if (division_cells == "4x4")
{ div_cells <- 4
} else if (division_cells == "5x5")
{ div_cells <- 5
} else
{ div_cells <-1
}
data_width <- ifelse(x%% major_x_dist==0, major_x_dist, major_x_dist/div_cells)
data_height <- ifelse(y%% major_y_dist==0, major_y_dist, major_y_dist/div_cells)
data_val <- sample(0:100, 33)
alldata <-data.frame(x, y, data_width, data_height, data_val)
ggplot(data= alldata, aes(x=x, y=y, width=data_width, height=data_height)) +
geom_tile(fill = "white", color="black") +
geom_text(aes(label = data_val), colour="black") +
coord_fixed()
注。テキストが正しい場所にあるように見えますが、セルは正しくありません。私は、この問題は、追加詳細セルの中心データポイントが大きなポイント(0,4)にあるという事実と関係していると思います。このコードが生成するプロットは以下の通りです。
提供できるトラブルシューティングのアドバイスは非常に高く評価されています。
このソリューションは完璧ですが、この問題に関するあなたの助けのすべてのためにあなたをとても感謝し、あなたは信じられないほどの助けを借りてきました! – User247365
喜び - 面白い質問のおかげで! –
今後の文書化のためにこの回答に追加します。この回答は、私が提供した範囲でシームレスに動作します。データが1x1の場合、 'w'および' h'値の 'NaN'の生成のためにわずかに分解されます。これは、 'w'と' h'が定義された後、ggplot行の前に 'df [is.na(df)] < - 1'という行を追加することで修正されますが、これはNaN = 1 'w'と' h'変数だけではありません。私は現在、グリッドの代わりにXまたは+を形成する状況にソリューションを適応させています。また、マトリックスあたり1つのグリッドに複数のグリッドがある場合もあります。 – User247365