2016-05-12 11 views
5

Aşağıdaki barplot ürününü oluşturdum, ancak sorun, efsanelerin doğru renge sahip olmaması ve ızgaraların çubukların önünde olmasıdır. Efsanedeki kutulara doğru sütunları koymak ve ızgarayı parmaklıkların arkasına koymak istiyorum.Açıklamaya renk ekleme

Ben de sadece ben R bu özellikler nasıl yapabilirim onlara

tanımlamak için her bir çubuğun altındaki bir kene koymak istersiniz? Kullandığım

barkplot

r komut:

autos_data <- read.table("data.dat", header=T, sep="\t") 

barplot(rep(NA,length(autos_data)),ylim=c(0,max(autos_data)),axes=FALSE) 
barplot(t(as.matrix(autos_data)), main=NULL, ylab= "% of Cloud usage", xlab="Input data size (MB)", ylim=c(0,50), beside=TRUE, lwd=1:2, angle=c(45,135), density=seq(5,40,10), col=c("blue","red","black","darkgreen")) 
grid(NA, 5, lwd=1,lty=5, col="gray") # grid only in y-direction 

# Place the legend at the top-left corner with no frame 
coords="top" 
legend(coords, c("WestVirginia","Chicago I","Chicago II","California"), text.col=par("col"), cex=1.2, bty="n", xpd=TRUE, horiz=TRUE, inset=c(0,-.22), angle=c(35,135,45,135), density=seq(5,40,10),col=c("blue","red","black","darkgreen")) 

Düzenleme:

dput(autos_data) 
structure(list(WestVirginia = c(29L, 29L, 23L, 23L), ChicagoI = c(30L, 
21L, 36L, 26L), ChicagoII = c(39L, 42L, 35L, 46L), California = c(2L, 
8L, 6L, 5L)), .Names = c("WestVirginia", "ChicagoI", "ChicagoII", 
"California"), class = "data.frame", row.names = c("1500", "3000", 
"4500", "6000")) 

veriler:

West-Virginia ChicagoI ChicagoII California 
1500 29 30 39 2 
3000 29 21 42 8 
4500 23 36 35 6 
6000 23 26 46 5 
+0

yapabilir misin 'dput (autos_data)' cevabım daha – rbm

cevap

3

yerine fill set Sen barplot çağrısında doğrudan efsane hesaplayabilir, belirterek args.legend parametresi üzerinden bağımsız değişkenler ve metni legend.text aracılığıyla. Izgara hatlarında artık görünmüyor böylece ızgara için, sonra çizgileri beyaz ve ile ızgara, ayarladıktan sonra barplot Replot gerekir:

Aynı barplot 3 aramaları gerekiyor ama o verir düşünüyorum istediğini:

# first plot 
barplot(t(as.matrix(autos_data)), main=NULL, axes=FALSE, beside=TRUE, col="white", ylab= "% of Cloud usage", xlab="Input data size (MB)", ylim=c(0,50)) 
# add the grid 
grid(NA, 5, lwd=1,lty=5, col="gray") # grid only in y-direction 
# hide the grid with white bars 
barplot(t(as.matrix(autos_data)), main=NULL, beside=TRUE, col="white", ylab= "% of Cloud usage", xlab="Input data size (MB)", ylim=c(0,50), add=TRUE) 
# plot the density lines, the legend, etc. 
barplot(t(as.matrix(autos_data)), main=NULL, axes=FALSE, beside=TRUE, 
     lwd=1:2, angle=c(45,135), density=seq(5,40,10), col=c("blue","red","black","darkgreen"), 
     legend.text=c("WestVirginia","Chicago I","Chicago II","California"), 
     args.legend=list(x="top", y=NULL, bty="n", ncol=4), add=TRUE) 

enter image description here

4

Bu parametre adları bir tutarsızlık.

Sen fill ayarlamanız gerekir: En legend yılında

legend(coords, c("WestVirginia","Chicago I","Chicago II","California"), text.col=par("col"), 
     cex=1.2, bty="n", xpd=TRUE, horiz=TRUE, inset=c(0,-.22), angle=c(35,135,45,135), 
     density=seq(5,40,10), fill=c("blue","red","black","darkgreen")) 

enter image description here

+0

Temizleyici (şimdi silindi) –

0

col

legend(
    coords, 
    legend = c("WestVirginia","Chicago I","Chicago II","California"), 
    text.col=par("col"), 
    cex=1.2, 
    bty="n", 
    xpd=TRUE, 
    horiz=TRUE, 
    inset=c(0,-.22), 
    angle=c(35,135,45,135), 
    density=seq(5,40,10), 
    fill=c("blue","red","black","darkgreen") 
) 
İlgili konular