我有一个关于如何转换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