我有一個關於如何轉換ggplot2中的y軸的問題。我的情節現在有兩條線和一個散點圖。對於散點圖,我對零附近的區域非常感興趣。是否有可能擴大0%到5%之間的空間並將空間縮小到20%到30%之間? 我試圖用 coord_trans(y =「log10」) 轉換成對數形式。但在這種情況下,我有很多負值,所以如果我想使用sqrt或log,負值將被刪除。你有什麼建議嗎?在不改變ggplot2中的原始數據的情況下轉換y軸
以下是我的數據點的示例。
df1 = data.frame(y = runif(200,min = -1, max = 1))
df1 = data.frame(x= seq(1:200), y = df1[order(abs(df1$y)),])
ggplot(df1) + geom_point(colour = "black",aes(x,y) ,size = 0.1)
我想在0%和5%之間有更多的空間,5%和30%之間的空間要少。
我試圖使用trans_new()來轉換軸。
eps <- 1e-8
tn <- trans_new("logpeps",
function(x) (x+eps)^(3),
function(y) ((y)^(1/3)),
domain=c(- Inf, Inf)
)
ggplot(df1)+ geom_point(colour = "black",aes(x,y) ,size = 0.1) +
# xlab("Observations sorted by PD in v3.1") + ylab("Absolute PD difference ") +
# ggtitle("Absolute PD for RiskCalc v4.0 relative to v3.1") +
scale_x_continuous(breaks = seq(0, round(rownum/1000)*1000, by = round(rownum/100)*10)) +
scale_y_continuous(limits = c(-yrange,yrange),breaks = c(-breaksY,breaksY),
sec.axis = sec_axis(~.,breaks = c(-breaksY[2:length(breaksY)],breaksY), labels = scales:: percent
)) +
# geom_line(data = df, aes(x,y[,3], colour = "blue"),size = 1) +
# geom_line(data = ds,aes(xval, yval,colour = "red"),size = 1) +
coord_trans(y = tn) +
scale_color_discrete(name = element_blank())
但它壓縮所述情節什麼I I want.Then嘗試使用Y,它是相對於該中心= Y^3,但它示出了錯誤:zero_range(範圍)
欣賞!!
您可以先過濾掉所有<0,並排除積極方面的任何異常值,從而爲您提供更有用的窗口。 – Mako212
@ Mako212有一個好點。我不確定具有不同範圍的兩個刻度的軸通常用於數據可視化還是推薦用於數據可視化。考慮將y軸的極限值設置爲10%和-10% –
@AlexP我強烈建議避免在同一圖表上使用不同的軸比例(假設您正在討論對紅色和藍色使用不同的範圍),因爲它暗示了在同一張圖表上兩組數值之間的假等值/比較。只需將圖表限制在+/- 10%就可以了 – Mako212