Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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 绘制多重打印:不同的最大值和最小值用于连续色标_R_Ggplot2_Colors - Fatal编程技术网

R 绘制多重打印:不同的最大值和最小值用于连续色标

R 绘制多重打印:不同的最大值和最小值用于连续色标,r,ggplot2,colors,R,Ggplot2,Colors,在我的真实数据中,我有一个PCA图,我想用50种不同的方式给它上色,基于我所有的分数,50种不同的特征。不同标志之间的分数差异很大,因此我希望每个图都有自己的连续色标的最大值和最小值 例如,如果我使用彩虹颜色渐变,这是可行的,但是因为我想寻找“高”和“低”,所以我想要一个蓝灰红色的刻度。当我使用scale\u color\u gradient2进行此操作时,最大值和最小值是基于所有数据设置的,而不是根据Hallmark设置的。请参见下面的示例代码: set.seed(1) df <- da

在我的真实数据中,我有一个PCA图,我想用50种不同的方式给它上色,基于我所有的分数,50种不同的特征。不同标志之间的分数差异很大,因此我希望每个图都有自己的连续色标的最大值和最小值

例如,如果我使用彩虹颜色渐变,这是可行的,但是因为我想寻找“高”和“低”,所以我想要一个蓝灰红色的刻度。当我使用
scale\u color\u gradient2
进行此操作时,最大值和最小值是基于所有数据设置的,而不是根据Hallmark设置的。请参见下面的示例代码:

set.seed(1)
df <- data.frame(matrix(rnorm(20), nrow=4)) %>% 
  cbind(.,data.frame(matrix(rnorm(20)*5, nrow=4)) ) %>% 
  add_column(HALLMARK= c("HALLMARK1","HALLMARK2","HALLMARK3","HALLMARK4"), .before = 1) %>% 
  gather(key=Patient, value= Value , -HALLMARK) %>% 
  cbind(., data.frame(Value2=matrix(rnorm(20), nrow=20)))
set.seed(1)
df%
cbind(,数据帧(矩阵(rnorm(20)*5,nrow=4)))%>%
添加_列(HALLMARK=c(“HALLMARK1”、“HALLMARK2”、“HALLMARK3”、“HALLMARK4”),.before=1)%>%
聚集(键=患者,值=值,-HALLMARK)%%>%
cbind(,data.frame(Value2=矩阵(rnorm(20),nrow=20)))
这是可行的,但颜色不对:

test.plots <- df %>% 
  group_by(HALLMARK) %>%
  do(
    plots=  ggplot(data=., mapping=aes(x=Value, y=Value2))+
  geom_point(.,mapping=aes(color=Value))+
  geom_text(.,mapping=aes(label=Patient, color=Value))+
  scale_colour_gradientn(colors = rainbow(3))+
  theme_bw()+
  theme(panel.grid = element_blank())+
    facet_wrap(~HALLMARK)
  )

test.plots$plots
test.plots%
分组依据(霍尔马克)%>%
做(
绘图=ggplot(数据=,映射=aes(x=值,y=值2))+
几何点(,映射=aes(颜色=值))+
geom_文本(,映射=aes(标签=患者,颜色=值))+
比例、颜色、梯度(颜色=彩虹(3))+
主题_bw()+
主题(panel.grid=element\u blank())+
小平面包裹(~HALLMARK)
)
test.plots$plots
这不符合我的要求,但颜色正确:

 test.plots <- df %>% 
  group_by(HALLMARK) %>%
  do(
    plots=  ggplot(data=., mapping=aes(x=Value, y=Value2))+
  geom_point(.,mapping=aes(color=Value))+
  geom_text(.,mapping=aes(label=Patient, color=Value))+
  scale_color_gradient2(midpoint=median(.$Value), mid="grey", low= "red", high="blue" )+
  theme_bw()+
  theme(panel.grid = element_blank())+
    facet_wrap(~HALLMARK)
  )

test.plots$plots
test.plots%
分组依据(霍尔马克)%>%
做(
绘图=ggplot(数据=,映射=aes(x=值,y=值2))+
几何点(,映射=aes(颜色=值))+
geom_文本(,映射=aes(标签=患者,颜色=值))+
比例\颜色\梯度2(中点=中值(.$值),中间=灰色,低=红色,高=蓝色)+
主题_bw()+
主题(panel.grid=element\u blank())+
小平面包裹(~HALLMARK)
)
test.plots$plots
有人能帮我吗?
提前感谢:)

由@Jimbou提供的功能解决方案:

test.plots <- df %>% 
  group_by(HALLMARK) %>%
  do(
    plots=  ggplot(data=., mapping=aes(x=Value, y=Value2))+
  geom_point(.,mapping=aes(color=Value))+
  geom_text(.,mapping=aes(label=Patient, color=Value))+
  scale_colour_gradientn(colors = c("grey","red","blue" ))+
  theme_bw()+
  theme(panel.grid = element_blank())+
    facet_wrap(~HALLMARK)
  )

test.plots$plots
test.plots%
分组依据(霍尔马克)%>%
做(
绘图=ggplot(数据=,映射=aes(x=值,y=值2))+
几何点(,映射=aes(颜色=值))+
geom_文本(,映射=aes(标签=患者,颜色=值))+
比例颜色梯度(颜色=c(“灰色”、“红色”、“蓝色”))+
主题_bw()+
主题(panel.grid=element\u blank())+
小平面包裹(~HALLMARK)
)
test.plots$plots

您的代码确实不是直截了当的,例如为什么使用faceting…但这是另一个问题。尝试缩放颜色梯度(颜色=c(“灰色”、“红色”、“蓝色”))?然后尝试
ggplot(df,aes(x=Value,y=Value2,label=Patient,color=Value))+geom\u point()+geom\u text()+scale\u color\u gradientn(colors=c(“灰色”、“红色”、“蓝色”)+facet\u wrap(~HALLMARK)
谢谢,您的解决方案适用于我的测试数据,但不适用于我的真实数据。对于您的第一个建议,我只收到一条警告消息,说
离散值提供给continuous scale
,第二条则给出
映射必须由aes()创建
。(刻面只是一个快速修复的解决方案,用于获取标题,告诉我绘图显示的标志:))这个
离散值提供给连续刻度
是data.frame中的一个系数与数值问题。选中
str()
。您必须在
aes()
中指定所有映射,包括x、y、fill、color、facet。因此,请检查列的名称。很好,现在它可以工作了:)