【问题标题】:Colors for stacked barplot堆叠条形图的颜色
【发布时间】:2018-09-07 15:11:12
【问题描述】:

我是一个新手,对堆叠条形图的颜色有疑问。让我先说我在提出这个问题之前已经搜索了答案,但我对 R 绘图很陌生,可能没有使用正确的搜索查询。

现在,我有一个矩阵,我想使用正负值绘制堆积条形图。我已经能够做到这一点(在一些帮助下),但我似乎无法让条形图接受不同颜色的正值和负值。以下是我写的:

dataset<-as.matrix(read.csv("skin_2hr.csv", header=T, row.names=1))

colors <-c("139", "orange", "132","purple","navy","forestgreen")
barcenter<-barplot(t(dataset[,3:2]), density=c(10,40,20,40,20,40),
main="Skin 2hr Post Exposure", 
xlab=expression(paste("kJ/m"^"2",4100K FL")), ylab="number of genes", 
    names.arg=rownames(dataset), 
    ylim=c(-150,500), col=colors)
lines(barcenter,dataset[,1])
box()
legend("topleft", legend=rownames(dataset), col=colors,
   pch=15, bty="n") 

由于某种原因,条形图都涂成橙色。barplot

数据矩阵如下:

    Total   UP  DOWN
1   113    92   -21
2   216   130   -86
4   406   266   -140
8   183   136   -47
16  150   119   -31
32  178   144   -34

在堆积的条形图中,条形图颜色正值是否可能与负值不同?如果是这样,您能否提供有关如何执行此操作的建议?

【问题讨论】:

  • 您能否向我们展示您的数据的dput(dataset)?或者如果非常大的 dput()head(dataset, 20)
  • 是的,给你:
  • 结构(c(113L, 216L, 406L, 183L, 150L, 178L, 92L, 130L, 266L, 136L, 119L, 144L, -21L, -86L, -140L, -47L, -31L , -34L), .Dim = c(6L, 3L), .Dimnames = list(c("1", "2", "4", "8", "16", "32"), c("总计”、“上升”、“下降”)))

标签: r colors bar-chart stacked


【解决方案1】:

可以在“scale_fill_manual”中使用this one之类的指南对颜色进行一一操作

dataset<-structure(c(113L, 216L, 406L, 183L, 150L, 178L, 92L, 130L, 266L, 136L, 119L, 144L, -21L, -86L, -140L, -47L, -31L, -34L), .Dim = c(6L, 3L), .Dimnames = list(c("1", "2", "4", "8", "16", "32"), c("Total", "UP", "DOWN")))
dataset<-as.data.frame(dataset)
dataset$id<-rownames(dataset)
dataset<-cbind(melt(dataset)[7:18,],dataset$Total)
names(dataset)[names(dataset)=="dataset$Total"]<-"Total"
dataset$variable<-letters[1:nrow(dataset)]
dataset2<-dataset[1:6,c(1,4)]

您需要 ggplot2,它对图表非常有用。

#install.packages("ggplot2")
library(ggplot2)
ggplot(dataset2, aes(factor(id,levels=dataset2$id), Total, group=1, colour=1)) + 
  geom_line(show.legend=F) + 
  geom_point(size=1, shape=16,show.legend=F) + 
  geom_bar(data=dataset, aes(x=id,y=value,fill=variable), stat="identity",position = "identity",show.legend=F)+
  ylab(paste("number of genes")) + xlab(expression("kJ / m"^"2"))+ 
  ggtitle("Skin 2hr Post Exposure")+
  guides(fill=FALSE)+#turns off color legend for above/below 0
  theme(legend.position="none")+
  #  scale_fill_brewer(palette = "Set3")+
  scale_fill_manual(values=c("orange", "black","green","yellow","white","red","pink","blue","brown","magenta","lightgray","lightblue"))+
  theme_bw()

【讨论】:

  • 感谢您的信息。为了澄清颜色分配,我将如何定义颜色?
  • 查看编辑。 scale_fill_brewer() 将接受所有 12 个条形中包含足够颜色的调色板。或者您可以将“变量”更改为更少的组。
猜你喜欢
  • 2023-04-09
  • 2021-02-25
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多