在R中为哑铃图添加图例 [英] Adding a legend to a dumbbell chart in R

查看:624
本文介绍了在R中为哑铃图添加图例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用下面的代码,我创建了一个哑铃图表。

  f < -  ggplot(Brewers_PA,aes(x = PA.2015,xend = PA.2016,y = Name) )
f + geom_dumbbell(color =darkblue,point.colour.l =darkred,point.colour.r =darkBlue,point.size.l = 2.5,point.size.r = 2.5) +
theme(plot.background = element_rect(fill =grey93,color =grey93))+
theme(plot.title = element_text(size = 11,face =bold,hjust = 0))+
theme(axis.text.x = element_text(size = 8))+
theme(axis.text.y = element_text(size = 8))+
theme (axis.title.x = element_text(size = 9))+
theme(axis.title.y = element_text(size = 9))+ ylab()+ xlab(Plate Appearance)+
ggtitle(2015-2016板块外观变化)

我能够做到这要感谢这个教程。


using the following code, I created a dumbbell chart.

f <- ggplot(Brewers_PA, aes(x=PA.2015, xend=PA.2016, y=Name))
f + geom_dumbbell(colour = "darkblue", point.colour.l = "darkred", point.colour.r = "darkBlue", point.size.l = 2.5, point.size.r = 2.5) + 
  theme(plot.background=element_rect(fill = "grey93", colour = "grey93")) +
  theme(plot.title=element_text(size = 11, face = "bold", hjust = 0)) + 
  theme(axis.text.x=element_text(size = 8)) +
  theme(axis.text.y=element_text(size = 8)) +
  theme(axis.title.x=element_text(size = 9)) + 
  theme(axis.title.y=element_text(size=9)) + ylab("") + xlab("Plate Appearance") + 
  ggtitle("Brewers Change in Plate Appearance 2015-2016") 

I was able to do this thanks to this tutorial. https://www.r-bloggers.com/beating-lollipops-into-dumbbells/

The only problem is that I would like to add a legend to this but I am not sure how. Does anybody know? All help is appreciated.

I would basically like the legend to show the years to the colours. So, "darkblue" = 2016 (PA.2016), "darkred" = 2015 (PA.2015). I wanted to add a picture but for some reason it won't work.

Here is the data frame I created:

               Name     PA.2015 PA.2016
1   Jonathan Villar     128     679
2      Chris Carter     460     644
3        Ryan Braun     568     564
4   Scooter Gennett     391     542
5      Hernan Perez     272     430
6  Kirk Nieuwenhuis     141     392
7   Jonathan Lucroy     415     544
8        Aaron Hill     353     429
9      Ramon Flores     289     289
10  Domingo Santana     187     281
11 Martin Maldonado     256     253
12     Keon Broxton       2     244
13    Orlando Arcia       0     216

解决方案

Pkg author, here.

I'd suggest not adding extra interpretation cycles for the reader and make it an in-chart "legend", plus removing some "chart junk" aesthetics:

library(ggplot2)
library(ggalt)

read.table(text='Name     PA.2015 PA.2016
"Jonathan Villar"    128     679
"Chris Carter"     460     644
"Ryan Braun"     568     564
"Scooter Gennett"     391     542
"Hernan Perez"     272     430
"Kirk Nieuwenhuis"     141     392
"Jonathan Lucroy"     415     544
"Aaron Hill"     353     429
"Ramon Flores"     289     289
"Domingo Santana"     187     281
"Martin Maldonado"     256     253
"Keon Broxton"       2     244
"Orlando Arcia"       0     216', header=TRUE, quote='"') -> Brewers_PA

f <- ggplot()
f <- f + geom_dumbbell(data=Brewers_PA, 
                       aes(x=PA.2015, xend=PA.2016, y=Name),
                       colour = "darkblue", 
                       point.colour.l = "darkred", point.colour.r = "darkBlue",
                       point.size.l = 2.5, point.size.r = 2.5)
f <- f + geom_text(data=data.frame(), 
                    aes(x=391, y= "Scooter Gennett", label="2015"),
                    color="darkred", hjust=1, size=3, nudge_x=-10)
f <- f + geom_text(data=data.frame(), 
                    aes(x=542, y= "Scooter Gennett", label="2016"),
                    color="darkBlue", hjust=0, size=3, nudge_x=10)
f <- f + scale_x_continuous(expand=c(0,10))
f <- f + labs(x=NULL, y=NULL,
              title="Brewers Change in Plate Appearance 2015-2016")
f <- f + theme(plot.background=element_rect(fill = "grey93", colour = "grey93"))
f <- f + theme(plot.title=element_text(size = 11, face = "bold", hjust = 0))
f <- f + theme(axis.text.x=element_text(size = 8))
f <- f + theme(axis.text.y=element_text(size = 8))
f <- f + theme(axis.title.x=element_text(size = 9)) 
f <- f + theme(axis.title.y=element_text(size=9))
f <- f + theme(axis.ticks=element_blank())
f <- f + theme(panel.grid.major.y=element_blank())
f <- f + theme(plot.margin=margin(30,30,30,30))
f

这篇关于在R中为哑铃图添加图例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆