以下は、geom_tileを使用してヒートマップを作成しようとするRコードです。プロット内で、ボックスのアウトラインと、ヒートマップを完成させるための塗りつぶし(コードではexitspeedというタイトル)もあるx // y座標の個別のペア(コードではplatelocsideとplatelocheightというタイトル)をプロットする必要があります。これが、プロットしたいデータフレームの現在の構造です(コードでは「df」とラベル付けされています)。
structure(list(platelocheight = c(2.594, 3.803, 3.254, 3.599,
3.617, 3.297, 2.093, 3.611, 2.842, 3.316, 2.872, 3.228, 3.633,
4.28, 3.309, 2.8, 2.632, 3.754, 2.207, 3.604, 3.443, 2.188, 3.452,
2.553, 3.382, 3.067, 2.986, 2.785, 2.567, 3.804), platelocside = c(0.059,
-1.596, -0.65, -0.782, -0.301, -0.104, 0.057, -0.807, 0.003,
1.661, 0.088, -0.32, -1.115, -0.146, -0.364, -0.952, 0.254, 0.109,
-0.671, -0.803, -0.212, -0.069, -0.09, -0.472, 0.434, 0.337,
0.723, 0.508, -0.197, -0.635), exitspeed = c(69.891, 73.352,
83.942, 85.67, 79.454, 85.277, 81.078, 73.573, 77.272, 59.263,
97.343, 91.436, 76.264, 83.479, 47.576, 84.13, 60.475, 61.093,
84.54, 69.959, 88.729, 88.019, 82.18, 83.684, 86.296, 90.605,
79.945, 59.899, 62.522, 77.75)), .Names = c("platelocheight",
"platelocside", "exitspeed"), row.names = c(NA, 30L), class = "data.frame")
>
コードを実行すると、出力でボックスのアウトラインを取得できますが、他のデータフレーム(タイトルdf)はプロットされませんでした。2つの別々のデータフレームをプロットできるgeom_tileを誰が使用するか知っている人はいますか?前もって感謝します!
library(RODBC)
library(ggplot2)
con=odbcConnect('ID',uid='username', pwd = 'password')
df=sqlQuery(con,"select platelocheight, platelocside, exitspeed from tm_sample where pitchcall='InPlay'
and exitspeed is not null")
topKzone <- 3.5
botKzone <- 1.6
inKzone <- -0.95
outKzone <- 0.95
kZone <- data.frame(
x=c(inKzone, inKzone, outKzone, outKzone, inKzone),
y=c(botKzone, topKzone, topKzone, botKzone, botKzone)
)
ggplot(kZone, aes(x,y)) +
geom_tile(data=df, aes(x=platelocside, y=platelocheight, fill= exitspeed)) +
scale_fill_distiller(palette = "Spectral") +
geom_path(lwd=1.5, col="black") +
coord_fixed()
問題は、2つのデータフレームの使用ではなく、geom_tile()
それ自体の実装にあることです。
あなたが交換した場合geom_tile
異なるGEOMのために、と言うgeom_point
か、geom_hex
たとえば、あなたはプロットが完全にレンダリングされていることを参照してくださいね。
library(ggplot2)
ggplot(kZone, aes(x,y)) +
geom_hex(data=df, aes(x=platelocside, y=platelocheight, col=exitspeed)) +
scale_fill_distiller(palette = "Spectral") +
geom_path(lwd=1.5, col="black") +
coord_fixed()
geom_tile
geom_tile
連続的なxおよびyスケールを使用しているため、データでは適切な選択ではありません。これにより、ヒートマップのようなグラフィックと比較して、散布図のようなものでより実行可能な選択になります。
あなたは例を見ることができます:
ggplot(mtcars, aes(x=as.factor(gear), y=as.factor(cyl), fill=hp))+
geom_tile()
2つの連続変数で呼び出す場合と比較して:
ggplot(mtcars, aes(x=wt, y=mpg, fill=hp))+
geom_tile()
何もプロットされていないように見えるほど実際には非常に小さいタイルが表示されます。
質問に戻ると、df
使用しているものplatelocside
にplatelocheight
は、数値の連続変数としての両方があります。それはgeom_hex
理想的とは言えない選択になります。あなたが使用することを主張するならgeom_tile
、私は2つの解決策のうちの1つを使用するでしょう:
解決策1
タイルの代わりにポイントを取得するcol
にはfill
、の代わりにを使用します(x
とy
は因子変数ではないため)
library(ggplot2)
ggplot(kZone, aes(x,y)) +
geom_tile(data=df, aes(x=platelocside, y=platelocheight, col=exitspeed), size=4) +
scale_fill_distiller(palette = "Spectral") +
geom_path(lwd=1.5, col="black") +
coord_fixed()
解決策2
メイクx
とy
因子変数:
df$h <- round(df$platelocheight)
df$s <- round(df$platelocside)
ggplot(kZone, aes(x,y)) +
geom_tile(data=df, aes(x=s, y=h, fill=exitspeed)) +
scale_fill_distiller(palette = "Spectral") +
geom_path(lwd=1.5, col="black") +
coord_fixed()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加