[解決済み] R では、サイズと色のパラメータを変えて geom_path を使用します。
質問
ggplot2のgeom_pathのsizeとcolorのパラメータでとても苦労しています。まず、私のデータとコード(両方とも短いもの)を共有し、次に私が得ているプロットを示し、そして私が得ようとしているプロットを説明させてください。私は今、この出力で本当に混乱しています。
# the data - x and y coordinates to plot
x_loc = c(39.29376, 39.44371, 39.59578, 39.7439, 39.88808, 40.18122,
40.92207, 41.91831, 42.09564, 42.27909, 81.77751, 81.79779, 81.81031,
81.81723, 81.81997, 81.81846)
y_loc = c(21.02953, 20.91538, 20.80633, 20.69479, 20.58158, 20.37095,
19.87498, 19.38372, 19.31743, 19.26005, 35.55103, 35.64354, 35.7384,
35.82535, 35.9067, 35.98656)
# creating the factor with which to base size and color off of
end = length(x_loc)
distances = sqrt(((x_loc[2:end] - x_loc[1:(end-1)]) ^ 2) + ((y_loc[2:end] - y_loc[1:(end-1)]) ^ 2))
my_colors = c('black', ifelse(distances > 0.5, 'red', 'black'))
# and now for my plot
ggplot() +
geom_point(aes(x = x_loc, y = y_loc)) +
geom_path(aes(x = x_loc, y = y_loc, col = as.factor(my_colors), size = as.factor(my_colors)),
alpha = 1) +
scale_color_manual(values = c("black", "red")) +
scale_size_manual(values = c(1.5, 0.45))
私のコードを実行したことがない人のために、私が得た出力プロットを示します。
以下は私が得たものですが、私が望むものではありません。私の目的は、座標点とその点を結ぶ線をプロットすることなので、geom_point() と geom_path() で別々のレイヤーを使っています。しかし、距離ベクトルで測定される非常に長い線(連続する座標間の距離が長い)については、線の色を赤にし、線を細くしたいと思います。短い距離の場合は、線の色を黒にして、線を太くしたいのです。
上のプロットで何が問題かというと、長い黒線はそこにあるべきでないということです。さらに黒い線が描かれていますが、これも表示されるべきではありません (他の赤い線があるところ)。
(座標をグループ (サイズによるグループと色によるグループ、両方とも my_colors ベクターを使用して設定) に分割することによって、geom_path は 2 つの別々のグループの点に対して 2 つの別々のパスを作成しており、それぞれのサイズと色が正しく設定されているように思われます。しかし、これは間違ったプロットになります)
私の説明が間違っていたら教えてください。何とかして真相を突き止めたいのです。私は今、私が望むものに似たプロットを手動で作成することに取り組み、それを使ってすぐに編集するつもりです
ありがとうございます。
EDIT: 期待しているのはこんな感じです。
これは、以下の5つのgeom_pathレイヤーを使って、多少ごまかしながら(16座標ならなんとかなるが、100Kでは無理という意味でのごまかし)作成したものである。
ggplot() + geom_point(aes(x = x_loc, y = y_loc)) +
geom_path(aes(x = x_loc[1:6], y = y_loc[1:6]),
color = 'black',
size = 1.5,
alpha = 1) +
geom_path(aes(x = x_loc[6:8], y = y_loc[6:8]),
color = 'red',
size = 0.45,
alpha = 1) +
geom_path(aes(x = x_loc[8:10], y = y_loc[8:10]),
color = 'black',
size = 1.5,
alpha = 1) +
geom_path(aes(x = x_loc[10:11], y = y_loc[10:11]),
color = 'red',
size = 0.45,
alpha = 1) +
geom_path(aes(x = x_loc[11:16], y = y_loc[11:16]),
color = 'black',
size = 1.5,
alpha = 1)
解決方法は?
私は自分自身でこれを解決したと思います - これに取り組んでいる誰かのために、グループ化に関係しています。近日中に解決策を編集します。
EDIT
ggplot() +
geom_point(aes(x = x_loc, y = y_loc)) +
geom_path(aes(x = x_loc, y = y_loc, col = my_colors, size = my_colors, group = my_group),
alpha = 1) +
scale_color_manual(values = c("black", "red")) +
scale_size_manual(values = c(1.5, 0.45))
色とサイズを分割する前に、すべてを同じグループにまとめる必要がありました。
関連
-
[解決済み] promise already under evaluation: recursive default argument reference or earlier problems?
-
[解決済み] 不適合な配列のコードエラー
-
[解決済み】エラー:ベクターメモリの枯渇(制限に達したか) R 3.5.0 macOS
-
[解決済み】ggplotの線幅を変更するには?
-
[解決済み】apply()とadply()の出力が異なる件)
-
[解決済み】 lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) のエラー : 'y' の NA/NaN/Inf, あらゆる方法を試したが解決しなかった。
-
[解決済み】 if/while (条件) {: TRUE/FALSEが必要な場所に値がない場合のエラー
-
[解決済み】Rでのデータ操作。'X'はアトミックでなければならない
-
[解決済み] na.fail.defaultのエラー:オブジェクトの値が見つからない - しかし、値が見つからないことはありません。
-
[解決済み】data.table vs dplyr:一方がうまくできない、またはうまくできないことを行うことができますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】添え字付き代入でNAを使用することはできません
-
[解決済み】R - if文の引数の長さが0である。
-
[解決済み】プロット時に 'x' と 'y' の長さが異なる ERROR が発生する。
-
[解決済み】lis[[i]]のエラー:1つ未満の要素を選択しようとした場合
-
[解決済み】RでのMLEエラー:'vmmin'の初期値が有限でない
-
[解決済み】 file(filename, "r", encoding = encoding) : cannot open the connectionでエラーが発生する。
-
[解決済み】bstTreeの予測値の混乱行列、エラー:'The data must contain some levels that overlap reference'.
-
[解決済み] [Solved] read.csv warning 'EOF within quoted string' prevents complete reading of file.
-
[解決済み】ggplot2でのプロット:「Error: カテゴリ軸のY軸に "Discrete value supplied to continuous scale "と表示される。
-
[解決済み】各グループの上位3要素を計算する際に「数値型、論理型、複合型でのみ可能な演算」を回避する方法