Python 如何使用R ggplot2从R基表中创建一个堆叠直方图作为带有行颜色图案的条形码打印
此问题最初已发布,尚未找到解决方案 在这里,我想问一下在保持整体布局的同时,如何解决着色问题,可能使用ggplot2或其他方法 简单地说,我想画一些类似于条形码图的东西,用条高反映行-列差异,条宽反映列之间的行和Python 如何使用R ggplot2从R基表中创建一个堆叠直方图作为带有行颜色图案的条形码打印,python,r,ggplot2,matrix,plot,Python,R,Ggplot2,Matrix,Plot,此问题最初已发布,尚未找到解决方案 在这里,我想问一下在保持整体布局的同时,如何解决着色问题,可能使用ggplot2或其他方法 简单地说,我想画一些类似于条形码图的东西,用条高反映行-列差异,条宽反映列之间的行和 test.matrix <- matrix(c(70, 120, 65, 140, 13, 68, 46, 294, 52, 410), ncol=2, byrow=TRUE) rownames(test.matrix) <- c("BC.1", &qu
test.matrix <- matrix(c(70, 120, 65, 140, 13, 68, 46, 294, 52, 410), ncol=2, byrow=TRUE)
rownames(test.matrix) <- c("BC.1", "BC.2", "GC", "MO", "EB")
colnames(test.matrix) <- c("12m","3m")
test.matrix <- as.table(test.matrix)
test.matrix
12m 3m
BC.1 70 120
BC.2 65 140
GC 13 68
MO 46 294
EB 52 410
plot(test.matrix)
test.matrix可以使用ggplot2
和tidyverse
功能尝试这种方法:
library(tidyverse)
#Code
test.matrix %>% as.data.frame.matrix %>% rownames_to_column('Var') %>%
pivot_longer(-Var) %>%
mutate(name=factor(name,levels = rev(unique(name)),ordered = T)) %>%
ggplot(aes(x=name,y=value,fill=Var))+
geom_bar(stat='identity',color='black',position='fill')+
coord_flip()+
scale_fill_manual(values=c('BC.1'="gold",'BC.2'="yellowgreen",
'GC'="navy",'MO'="royalblue",'EB'="orangered"))+
theme(axis.text.x = element_blank(),
axis.ticks.x = element_blank())
输出:
另一个选择是:
#Code 2
test.matrix %>% as.data.frame.matrix %>% rownames_to_column('Var') %>%
pivot_longer(-Var) %>%
mutate(name=factor(name,levels = rev(unique(name)),ordered = T)) %>%
ggplot(aes(x=name,y=value,fill=Var))+
geom_bar(stat='identity',color='black')+
coord_flip()+
facet_wrap(name~.,scales = 'free',strip.position = 'left',ncol = 1)+
scale_fill_manual(values=c('BC.1'="gold",'BC.2'="yellowgreen",
'GC'="navy",'MO'="royalblue",'EB'="orangered"))+
theme(axis.text.y = element_blank(),
axis.ticks.y = element_blank())
输出:
这接近我需要的,但此代码不再显示列与列之间的差异。@fuchsdeluxe让我添加另一个可能的解决方案。@fuchsdeluxe我添加了一个更新。希望能对大家有用!这绝对是有用的,Thx很多!有没有办法调整x刻度,使两个面都具有相同的刻度?@fuchsluxe是的,只需从facet\u wrap()
中删除scales='free'
,您将拥有一个通用刻度。我希望这对你有帮助!
#Code 2
test.matrix %>% as.data.frame.matrix %>% rownames_to_column('Var') %>%
pivot_longer(-Var) %>%
mutate(name=factor(name,levels = rev(unique(name)),ordered = T)) %>%
ggplot(aes(x=name,y=value,fill=Var))+
geom_bar(stat='identity',color='black')+
coord_flip()+
facet_wrap(name~.,scales = 'free',strip.position = 'left',ncol = 1)+
scale_fill_manual(values=c('BC.1'="gold",'BC.2'="yellowgreen",
'GC'="navy",'MO'="royalblue",'EB'="orangered"))+
theme(axis.text.y = element_blank(),
axis.ticks.y = element_blank())