如何解决根据列中的特定值为数据点着色
df <- data.frame(col1=c('hio.k2','fhuei.k1','buew.k2'),col2=c(1,4,5.5))
> df
col1 col2
1 hio.k2 1.0
2 fhuei.k1 4.0
3 buew.k2 5.5
我想绘制df并为数据分配颜色。 .k1
中的.k2
或col1
中定义了用于着色的组。
我尝试过
color = rep(NA,length=length(df$col2))
color[which(df$col2=="*k1")] = "red"
color[which(df$col2=="*k2"))] = "blue"
那是行不通的。我认为问题是*
。如何根据k1
中的k2
或col1
分配颜色?
我希望颜色看起来像这样
color
'blue','red','blue'
情节
hist <- ggplot(df) +
geom_histogram(mapping = aes(x = `col2`),show.legend = TRUE,color = color) +
解决方法
我建议使用ggplot2
中的tidyverse
和一些数据操作来获取颜色变量的方法:
library(tidyverse)
#Data
df <- data.frame(col1=c('hio.k2','fhuei.k1','buew.k2'),col2=c(1,4,5.5))
#Separate and create bar
df %>% mutate(dup=col1) %>% separate(col = dup,into = c('dup','coln'),sep = '\\.') %>%
select(-dup) %>%
ggplot()+
geom_point(aes(x=col1,y=col2,color=coln))+
scale_color_manual(values = c('k1'='red','k2'='blue'))+
theme_bw()
输出:
,这是您所需的条形图。 (我想你的意思是条形图而不是直方图)
library(ggplot2)
ggplot(df) +
geom_col(aes(x = col1,y = col2,fill = stringr::str_sub(col1,-2,-1))) +
scale_fill_manual(values = c(k2 = "blue",k1 = "red")) +
labs(fill = "K")
不过,我相信默认颜色会更好:
ggplot(df) +
geom_col(aes(x = col1,-1))) +
labs(fill = "K") +
theme_light()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。