[解決済み] coord_cartesianを使用して1軸のみをクリップする。
質問
X軸の値がクリップされ、Y軸の値がクリップされないプロットを作成しようとしています。
質問です。
- ggplotを使用して可能ですか?
- どのようにコーディングするのですか?
コードです。
Z <- data.frame(X = c(1,2,3,4,5,6,7,8),
Y = c(0,3,2,5,5.2,2,4,3))
# plotting with not filter (just toggle clip = on/off)
ggplot(Z, aes(x=X, y=Y)) +
geom_line() +
coord_cartesian(xlim = c(0, 7),
ylim = c(0, 5),
clip = 'off') +
theme_bw() +
scale_y_continuous(expand = c(0,0)) +
theme(plot.margin = unit(c(0.5, 0.5, 0.5, 0.5), 'cm'))
# plotting filter
ggplot(Z[Z$X < 7, ], aes(x=X, y=Y)) +
geom_line() +
coord_cartesian(xlim = c(0, 7), ylim = c(0, 5), clip = 'off') +
theme_bw() +
scale_y_continuous(expand = c(0,0)) +
theme(plot.margin = unit(c(0.5, 0.5, 0.5, 0.5), 'cm'))
出力(X値のクリップオフ/オン/フィルタリング)。
X軸はx=6で止めたいが、Y値はプロットの枠の外まで出せるようにしたい。
フィルターをかけると、高いX値が存在するにもかかわらず、X軸が十分に伸びないのです。これは、私が
coord_cartesian
として、そもそも
scale_x_continuous
と
xlim
は、プロット時に将来のX軸の時間をすべて無視するため、次のように、本来よりも早く行を停止します。
ここで
試行する。
Y軸の上限を少し上げると(この例では5.2)、欲しい効果が得られるのですが、実際のデータを使ってプロットすると上限が越えてしまい、変な感じになってしまいます。
y-limitを増やしたデータの実際のプロットの出力。
実際のデータをプロットするとき、この100のマークの上の余分な線は意味をなさない、なぜなら100%を超えることはないはずだからだ、それがこの回避策を避けたい理由だ。(セキュリティ上の理由から、このプロットにはデータ/プロットコードは追加されていません)
解決方法は?
このような場合、異なる動作をする
coord_cartesian(xlim = ...)
と
scale_x_continuous(limits = ...)
. coords関数はソフトクリッピング、つまりデータを描画してから切り取る。一方、scales 関数はハードクリップを行い、境界からはみ出した値を削除してから描画します。スケール関数のクリッピング動作をもう少し正確に行うには、境界外 (
oob
) の引数をそのスケールに与えます。デフォルトでは、データを削除します。
squish()
関数を使用すると、最も極端な値の点だけをレンダリングすることができます。
ggplot(Z, aes(x=X, y=Y)) +
geom_line() +
coord_cartesian(ylim = c(0, 5),
clip = 'off') +
theme_bw() +
scale_y_continuous(expand = c(0,0)) +
scale_x_continuous(limits = c(0, 7), expand = c(0,0), oob = scales::squish) +
theme(plot.margin = unit(c(0.5, 0.5, 0.5, 0.5), 'cm'))
関連
-
[解決済み】エラー:'dimnames' [2]の長さが配列の範囲と等しくない [終了しました]
-
[解決済み】R - if文の引数の長さが0である。
-
[解決済み】ggplot boxplotでPosition-dodge警告?
-
[解決済み】match.fun(FUN)でのエラーについて)
-
[解決済み】「Error in stripchart.default(x1, ...) : invalid plotting method」エラーを回避する方法は?
-
[解決済み】R: predict() の数値 'envir' 引数が長さ1でない。)
-
[解決済み】Rでデータフレームのサブセットをプロットする方法は?
-
[解決済み】 .subset2(x, i, exact = exact)のエラー:Rの添え字が範囲外である。
-
[解決済み】'NULL'型の非(リストまたはベクトル)に適用されるis.na()は何を意味するのか?
-
[解決済み] ggplot2 の軸ラベルを回転させ、間隔を空ける
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「arguments imply differing number of rows: x, y」というエラーは何を意味するのか?
-
[解決済み] 変数の型(リスト)が無効です
-
[解決済み】値を置き換えようとすると、"データフレームの添え字の割り当てで欠損値は許可されない"
-
[解決済み】R ggplot2 で scale_x_discrete を使用する。
-
[解決済み] lmer エラー: グループ化係数は観測数未満でなければならない
-
[解決済み】R: predict() の数値 'envir' 引数が長さ1でない。)
-
[解決済み] ヒートマップ作成時のエラー - 外部関数呼び出しでNA/NaN/Inf (arg 11)
-
[解決済み】randomForestの実行予測で「NA/NaN/Inf in foreign function call (arg 7)」をなくすには?
-
[解決済み】.External.graphics Rでエラーが発生しました。
-
[解決済み] ggplot2 Rプロットで軸の制限を設定するには?