小编VDK*_*VDK的帖子

为负值和正值定义颜色渐变 scale_fill_gradientn()

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() 中定义“中间”范围?

ggplot2正负值不同颜色渐变

数据(正负):

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)

plot gradient r rescale ggplot2

8
推荐指数
1
解决办法
7194
查看次数

在ggplot中绘制具有负面和正面的累积直方图?

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)

plot r histogram ggplot2

7
推荐指数
1
解决办法
1014
查看次数

合并和替换两个data.tables中的值

我是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)

r data.table

6
推荐指数
1
解决办法
1392
查看次数

标签 统计

r ×3

ggplot2 ×2

plot ×2

data.table ×1

gradient ×1

histogram ×1

rescale ×1