Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R的ggplot2中指定手动色标?_R_Ggplot2_Colors - Fatal编程技术网

如何在R的ggplot2中指定手动色标?

如何在R的ggplot2中指定手动色标?,r,ggplot2,colors,R,Ggplot2,Colors,我用手动色标绘制ggplot,指定中点=2.5,如下所示 #create dataframe df <-data.frame(x = c(rnorm(300, 3, 2.5), rnorm(150, 7, 2)), # create random data y = c(rnorm(300, 6, 2.5), rnorm(150, 2, 2)), z = c(rnorm(300, 6, 2.5), rnorm(150,

我用手动色标绘制ggplot,指定中点=2.5,如下所示

#create dataframe
df <-data.frame(x = c(rnorm(300, 3, 2.5), rnorm(150, 7, 2)), # create random data
                  y = c(rnorm(300, 6, 2.5), rnorm(150, 2, 2)),
                  z = c(rnorm(300, 6, 2.5), rnorm(150, 2, 2)))
#plot
gg <-ggplot(df, aes(x=x, y=y, color=z)) + 
       geom_point() + 
       scale_color_gradient2(midpoint=2.5, low="red", mid="white",high="blue", space ="Lab")
,其结果如下图所示

这里,我想在色标的最小边缘设置更鲜艳或深红色,即FF0000或rgb255,0,0,即最小z值为mindf$z[1]-3.718939

在这种情况下,我不想移动中点=2.5

你有什么解决办法吗

针对第一个答案添加了注释
我想保持蓝色生动的颜色在z最大值,如原始图中所示。由于第一个答案,我注意到存在比例\颜色\梯度2中的trans=值。但是,我不知道如何解决我的问题。

你的梯度已经设置为最小值FF0000。刻度是线性的,因此无法绕过它

取而代之的是,您可以考虑在SueLeCopyGraceTrime2调用中用Trase=转换颜色比例。 默认值是log、log2和sqrt。由于z的值为负值,所有这些都没有太大的帮助

您可以改为设置带有刻度的自定义转换函数:


我同意这看起来并不完美,但您可以通过设置自己的trans_新函数轻松设置任意转换

您的渐变已设置为最小值FF0000。刻度是线性的,因此无法绕过它

取而代之的是,您可以考虑在SueLeCopyGraceTrime2调用中用Trase=转换颜色比例。 默认值是log、log2和sqrt。由于z的值为负值,所有这些都没有太大的帮助

您可以改为设置带有刻度的自定义转换函数:


我同意这看起来并不完美,但您可以通过设置自己的trans_新函数轻松设置任意转换

考虑到您的样本,中点将数据分成大约25%和75%

我们可以使用scale\u color\u gradient2和四色调用来代替scale\u color\u gradientn和白色作为第二种颜色,因为中间品脱刚刚超过25%

gg <-ggplot(df, aes(x=x, y=y, color=z)) + 
  geom_point() + 
  scale_color_gradientn(colors=c("red","white", "blue", "darkblue"), space ="Lab")

注意:您也可以尝试颜色=cred、白色、浅蓝色、蓝色

考虑到您的样本,中点将数据分成大约25%和75%

我们可以使用scale\u color\u gradient2和四色调用来代替scale\u color\u gradientn和白色作为第二种颜色,因为中间品脱刚刚超过25%

gg <-ggplot(df, aes(x=x, y=y, color=z)) + 
  geom_point() + 
  scale_color_gradientn(colors=c("red","white", "blue", "darkblue"), space ="Lab")

附言:你也可以试试颜色=红色、白色、浅蓝色、蓝色

非常感谢你的回答。多亏了你,我学会了翻译。但是,我希望在z最大值时保持蓝色与原始生动的颜色一样。你有其他方法来完成这个吗?我已经编辑了它,将中点改为asinh2.5,我认为这可能对你有用。非常感谢你的回答。多亏了你,我学会了翻译。但是,我希望在z最大值时保持蓝色与原始生动的颜色一样。你有没有其他方法来完成这个任务?我已经编辑了它,将中点改为asinh2.5,我想这可能会对你有用。
gg <-ggplot(df, aes(x=x, y=y, color=z)) + 
  geom_point() + 
  scale_color_gradientn(colors=c("red","white", "blue", "darkblue"), space ="Lab")