gpt4 book ai didi

r - 使用对数刻度时具有难看边距的散点图

转载 作者:行者123 更新时间:2023-12-02 05:00:20 26 4
gpt4 key购买 nike

我有一个有点“奇怪”的二维分布(对于一些统一的值不正常,但它有点像这样..这只是一个最小的可重现示例),并且想要对数值进行对数转换并绘制它们.

library("ggplot2")
library("scales")
df <- data.frame(x = c(rep(0,200),rnorm(800, 4.8)), y = c(rnorm(800, 3.2),rep(0,200)))

如果没有对数转换,散点图(包括我需要的地毯图)工作(相当)好,除了 x 轴上的地毯图略窄:

p <- ggplot(df, aes(x, y)) + geom_point() +  geom_rug(alpha = I(0.5)) + theme_minimal()
p

enter image description here

不过,当使用 log10 变换绘制相同的图形时,边缘处的点(分别在 x = 0 和 y = 0 处)绘制在地毯图之外或仅绘制在轴上(与其他数据一起,并且只有一个点的一半边是可见的)。

p + scale_x_log10() + scale_y_log10()

enter image description here

如何“重新缩放”坐标轴,以便所有点都完全包含在网格内并且地毯图不受影响,如第一个示例所示?

最佳答案

也许你想要

p + scale_x_log10(oob=squish_infinite) + scale_y_log10(oob=squish_infinite)

我真的不知道对于那些可能为负或无穷大的值您期望发生什么,但是当转换没有按照您的意愿进行时,一个一般性建议是在 ggplot2 之外执行它们。像这样的东西可能会有用,

library(plyr) 
df2 <- colwise(log10)(df) # log transform columns
df2 <- colwise(squish_infinite)(df2) # do something with infinites

p %+% df2 # plot the transformed data

关于r - 使用对数刻度时具有难看边距的散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16903940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com