Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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 ggplot使用预定义调色板根据其他列打印颜色条件_R_Ggplot2_Colors_Conditional - Fatal编程技术网

R ggplot使用预定义调色板根据其他列打印颜色条件

R ggplot使用预定义调色板根据其他列打印颜色条件,r,ggplot2,colors,conditional,R,Ggplot2,Colors,Conditional,我希望使用条件颜色创建带有ggplot2的图表,这样,如果数据点符合另一列上的条件,它将为“绿色”,否则,它将遵循预定义的调色板 我在SO中看到的关于ggplot2中条件颜色的答案建议使用scale\u fill\u manual或scale\u color\u manual和手动指示颜色 如果您有许多颜色类别需要评估,或者只想使用RColorBrewer或Viridis中的一个漂亮的预定义调色板,那么这并不是很理想 以下是我尝试的可复制示例: library(ggplot2) library(

我希望使用条件颜色创建带有
ggplot2
的图表,这样,如果数据点符合另一列上的条件,它将为
“绿色”
,否则,它将遵循预定义的调色板

我在SO中看到的关于
ggplot2
中条件颜色的答案建议使用
scale\u fill\u manual
scale\u color\u manual
和手动指示颜色

如果您有许多颜色类别需要评估,或者只想使用
RColorBrewer
Viridis
中的一个漂亮的预定义调色板,那么这并不是很理想

以下是我尝试的可复制示例:

library(ggplot2)
library(RColorBrewer)

# get data
  data("mtcars")

ggplot(mtcars, aes(x=qsec, y=hp,  color= ifelse( cyl < 6, "green", factor(carb)) )) +
  scale_colour_brewer( type = "seq", palette = "Reds") +
  geom_point() +
  theme_bw()
库(ggplot2)
图书馆(RColorBrewer)
#获取数据
数据(“mtcars”)
ggplot(mtcars,aes(x=qsec,y=hp,颜色=ifelse(气缸<6,“绿色”,系数(carb)))+
比例尺颜色酿酒器(type=“seq”,palete=“Reds”)+
几何点()+
主题_bw()

添加一个额外的点图层,只包含您想要的特定颜色的数据子集,怎么样

mtcars$condition <- with(mtcars, ifelse(cyl < 6, 1, 0))

ggplot(mtcars, aes(x=qsec, y=hp,  color= factor(carb))) +
  geom_point() + 
  geom_point(data = subset(mtcars, condition == 1), color = "green") +
  scale_colour_brewer( type = "seq", palette = "Reds") +
  theme_bw()

mtcars$condition另一个选项,它没有添加另一层那么短,但我认为绘图有点干净(没有重叠点)


df谢谢你的回答@Daniel。我认为这可能是最直接的解决方案,我投票支持你的答案,但我将答案授予了马修,因为他的答案更完整,因为如果图表在图例上明显,那么修改对传达信息非常重要。谢谢啊。。。可以我以为你不想修改传说。我有一个与迈克非常相似的解决方案,但我认为传奇人物的标准更可取。
df <- mtcars
df$col <- ifelse( df$cyl < 6, "cyl < 6", as.character(df$carb))
non_green <- unique(df$col[df$col != "cyl < 6"])
non_green <- non_green[order(non_green)]

ggplot(df, aes(x=qsec, y=hp,  colour= col )) +
  scale_color_manual(values = c(setNames(brewer.pal(length(non_green), name = "Reds"), non_green), "cyl < 6" = "green")) +
  geom_point() +
  theme_bw()