我從 ggplot 中看到了一些非常奇怪(且不受歡迎)的行為。我正在使用以下代碼生成沿單個路徑具有不同顏色段的圖。
library(data.table)
library(ggplot2)
testData = fread("test_data.tsv")
ggplot(testData, aes(X, Y, color = Color, group = 1))
geom_path(size = 1.5) scale_color_identity()
(“test_data.tsv”中的資料可以在
如您所見,邊緣非常模糊(或模糊,或鋸齒狀,或任何您想稱呼它們的東西),我似乎無法修復它們。我嘗試以更高的 dpi 或其他圖形格式(例如 pdf)匯出,但沒有任何效果。
有趣的是,放大模糊部分似乎可以洞察正在發生的事情:

每個點似乎都對齊以連接到它的鄰居,但實際連接并不順利。我認為這是使用“group = 1”引數來防止 ggplot 將所有類似顏色的區域連接在一起的偽影。但是,正是出于這個原因,我無法更改該選項。
有沒有我可以實施的解決這個問題的方法,或者我現在只是遇到了 ggplot 的限制?
uj5u.com熱心網友回復:
這與擁有如此多的資料點和(相對)粗線有關 - 所以您的繪圖代碼沒有問題。如果您使用較小的 值檢查資料size,您不會得到“模糊”的外觀,但更難將細線可視化:
ggplot(testData, aes(X, Y, color = Color, group=1))
geom_path(size=0.5) scale_color_identity()

解決方法是使用lineend=...引數 ingeom_path()來平滑點連接的位置。在將行大小設定為非常大(例如,大于 1)之前,這根本不會產生太大影響。默認值是lineend="butt"在該點處繪制一條硬邊。您要在此處使用的選項是lineend="round"提供圓角邊緣。這是它的樣子:
ggplot(testData, aes(X, Y, color = Color, group=1))
geom_path(size=1.5, lineend = "round") scale_color_identity()

詳細了解它的作業原理
為了更好地了解為什么會這樣,讓我們??以下面顯示的示例資料集為例。首先,這是使用默認值 ( lineend="butt") 時的圖:
set.seed(8675309)
df <- data.frame(x=1:20, y=sample(-50:50, size=20, replace=T), col = sample(LETTERS[1:2], size=20, replace=T))
ggplot(df, aes(x,y, color=col, group=1))
geom_path(size=5, lineend="butt", alpha=0.8, show.legend = FALSE)
theme_light()

現在設定時的區別lineend="round"如下:
ggplot(df, aes(x,y, color=col, group=1))
geom_path(size=5, lineend="round", alpha=0.8, show.legend = FALSE)
theme_light()

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416795.html
標籤:
上一篇:ggplot中三個時間點的箱線圖
