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