ggplot2 histogram legend too large

2019-04-02 16:57发布

I'm pretty happy with the results I'm getting with R. Most of my stacked histogram plots are looking fine, e.g.

enter image description here

and

enter image description here

However, I have a few that have so many categories in the legend that the legend is crowing out the plot, e.g.

enter image description here

How can I fix this?

Here is my plot.r, which I call on the command line like this

RScript plot.r foo.dat foo.png 1600 800

foo.dat

account,operation,call_count,day
cal3510,foo-method,1,2016-10-01
cra4617,foo-method,1,2016-10-03
cus4404,foo-method,1,2016-10-03
hin4510,foo-method,1,2016-10-03
mas4484,foo-method,1,2016-10-04
...

entirety of foo.dat: http://pastebin.com/xnJtJSrU

plot.r

library(ggplot2)
library(scales)

args<-commandArgs(TRUE)

filename<-args[1]
png_filename<-args[2]

wide<-as.numeric(args[3])
high<-as.numeric(args[4])

print(wide)
print(high)

print(filename)
print(png_filename)

dat = read.csv(filename)

dat$account = as.character(dat$account)
dat$operation = as.character(dat$operation)
dat$call_count = as.integer(dat$call_count)
dat$day = as.Date(dat$day)

png(png_filename,width=wide,height=high)

p <- ggplot(dat, aes(x=day, y=call_count, fill=account))
p <- p + geom_histogram(stat="identity")
p <- p + scale_x_date(labels=date_format("%b-%Y"), limits=as.Date(c('2016-10-01','2017-01-01')))

print(p)

dev.off()

1条回答
2楼-- · 2019-04-02 17:33

Answer from @PierreLafortune

using:

p <- p + theme(legend.position="bottom")
p <- p + guides(fill=guide_legend(nrow=5, byrow=TRUE))

much improved

查看更多
登录 后发表回答