문제

My data looks like this:

service,rating_1,rating_2,rating_3,rating_4,rating_5
renew_patent,0,0,1,2,11
apply_benefit,21,20,121,828,1744
apply_employment_tribunal,0,0,0,0,0

I want R to print me a histogram for each row, with the columns as the bars of the histogram.

I've got this so far:

require(lattice)
data <- read.csv("test.csv", header = TRUE)
colors = c('red', 'orange', 'yellow', 'blue', 'green')
barchart(rating_1+rating_2+rating_3+rating_4+rating_5 ~ service, data=data, 
  auto.key=list(space='right'), scales=list(x=list(rot=45)), 
  ylab="Percentage of total", col=colors)

It's working, but it's only changing the colour of the bars, not the colour of the legend.

How can I specify the colour of the legend as well as the bars?

도움이 되었습니까?

해결책

Rather than passing a col= parameter to barchart, lattice much prefers if you change the par.settings. In this case. the color of the bars is determined by superpose.polygon because you have different groups of ratings. This should do what you want

data<-data.frame(
    service = c("renew_patent", "apply_benefit", "apply_employment_tribunal"),
    rating_1 = c(0, 21, 0), 
    rating_2 = c(0, 20, 0),
    rating_3 = c(1, 121, 0), 
    rating_4 = c(2, 828, 0),
    rating_5 = c(11, 1744, 0)
)

colors = c('red', 'orange', 'yellow', 'blue', 'green')
barchart(rating_1+rating_2+rating_3+rating_4+rating_5 ~ service, data=data, 
  auto.key=list(space='right'), scales=list(x=list(rot=45)), 
  ylab="Percentage of total", par.settings=list(superpose.polygon=list(col=colors)))
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top