R version 3.1.1 (2014-07-10)
Platform: i386-w64-mingw32/i386 (32-bit)
我正在处理ggplot2()值从 -1 到 +1的热图。我想实现负值具有从深蓝色(-1)到浅蓝色(-0.00000001)的蓝色渐变和从浅红色(0.00000001)到深红色(1)的红色渐变。小值不应淡入白色,因为零应为白色,并且 0 和小值之间应有明显的对比度。NA 值应为灰色。
我试过了scale_fill_gradient2(),scale_fill_gradientn()也用rescale().
已经讨论了一个类似的主题,但我无法解决我的问题:
是否可以在 scale_fill_gradient2() 中定义“中间”范围?
数据(正负):
data.clean <- structure(list(`1` = c(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1
), `2` = c(-0.742791272678673, -0.637008381689233, -0.678722760290557,
-0.374604178402531, -0.752540076766764, -0.741425721633379, -0.790950497422989,
-0.822779886175826, -0.696227459496285, -0.698453447846652),
`3` = c(-0.525688574069743, -0.43137330754352, -0.363377723970944,
-0.210140400587573, -0.532475351847671, -0.587485278919413,
-0.683607015861601, -0.630387125338536, -0.494214515339252,
-0.566343042071197), `4` = c(-0.311771191820642, -0.320141843971631,
-0.20021186440678, -0.0798166672550588, -0.369634479817365,
-0.452880524911674, -0.526639098645571, -0.401771184676448,
-0.278097123757212, -0.367096091610655), …Run Code Online (Sandbox Code Playgroud) R version 3.1.1 (2014-07-10) Platform: i386-w64-mingw32/i386 (32-bit)
我正在制作直方图ggplot2.目的是在一个图中组合负面和正面的累积直方图.很容易,我可以分别为负面和正面绘制直方图,但只要我将它们组合起来就会变得一团糟.
样本数据:
df <- structure(list(NEG = c(-42.962, -1.86, -13.275, -56.188, -2.25,
-12.199, -3.953, -13.309, -4.512, -11.461, -19.813, -54.311,
-59.934, -7.045, -14.44, -40.829, -143.034, -233.009, -70.72,
-5.578), POS = c(180.328, 290.809, 156.894, 31.414, 629.74, 590.672,
268.89, 69.618, 415.007, 138.444, 10.139, 20.565, 106.027, 69.129,
19.809, 8.22, 53.711, 36.035, 11.694, 12.705)), .Names = c("NEG",
"POS"), row.names = c(NA, 20L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
积极方面的代码确实有效:
ggplot(df)+
geom_histogram(aes(x= POS, y=rev(cumsum(rev(..count..)))/4),binwidth=1)
Run Code Online (Sandbox Code Playgroud)
负面代码也有效:
ggplot(df)+
geom_histogram(aes(x= NEG, y=cumsum(..count..)/4),binwidth=1)
Run Code Online (Sandbox Code Playgroud)
但是将这两层结合起来就会产生混乱:
ggplot(df)+ …Run Code Online (Sandbox Code Playgroud) 我是data.table包的新手,有一个简单的问题.我有两个data.tables与使用键进行比较.在data.table 1中,如果在data.table B中同样找到键列A和B,则列C的值从"NO"变为"OK".此步骤不可避免地必须完成.
library(data.table)
df_1 <- data.frame(A=c(1,1,3,5,6,7), B = c("x","y","z","q","w","e"), C = rep("NO",6))
df_2 <- data.frame(A=c(3,5,1), B = c("z","q","x"), D=c(3,5,99))
keys <- c("A","B")
dt_1 <- data.table(df_1, key = keys)
dt_2 <- data.table(df_2, key = keys)
dt_1[dt_2, C := "OK"]
Run Code Online (Sandbox Code Playgroud)
现在我得到data.table:
A B C
1: 1 x OK
2: 1 y NO
3: 3 z OK
4: 5 q OK
5: 6 w NO
6: 7 e NO
Run Code Online (Sandbox Code Playgroud)
我想包括第二个操作.如果在data.table 2中,列A的值不等于列D,则应在第一次操作之后使用列D的值.含义D列优于A.无论D中的值有多少,这都应该有效.所需的data.table看起来如下:
A B C
1: 99 x OK
2: 1 y NO …Run Code Online (Sandbox Code Playgroud)