Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
338 views
in Technique[技术] by (71.8m points)

r - How to manually set colors in a bar chart

Currently the default colors for the below bar chart are Apct = Red , BPct = Green, CPct = Blue.

How do I change the color so that Apct = Purple, BPct = Black, CPct = Red?

Here is the working code:

library(reshape)
Time<-data.frame(Time = c(as.POSIXct("2015-02-05 14:35:00"), as.POSIXct("2015-02-05 14:40:00")))
APct<-c(.1,.2,.7)
BPct<-c(.2,.4,.4)
Time
data<-cbind(Time, rbind(APct, BPct))
data
colnames(data)<-c("Time", "APct","BPct","CPct")
rownames(data)<- NULL
data
data<-melt(data, measure.vars =c("APct","BPct","CPct") )
  ggplot(data=data, aes( x = Time,  y=value, fill=variable))   +  
  geom_bar(stat="identity") +
  ggtitle("% ") +  xlab("Time") +
  ylab("Percentage") +theme(axis.text.x = element_text(angle = 90, hjust = 1))

Also -

How do I know that purple will go with Apct? Is it alphabetically ordered or can I manaually set something liek Apct = Purple?

Also is there a way to make it so the Cpct is always the bottom bar, BPCt the middle bar and APct the top bar?

Thank you.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

you can use scale_fill_manual to control the colours.

So your call to ggplot becomes

ggplot(data=data, aes( x = Time,  y=value, fill=variable))   +  
geom_bar(stat="identity") +
ggtitle("% ") +  xlab("Time") +
ylab("Percentage") +theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
scale_fill_manual(values=c("purple","black","red"))

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...