2015-05-19 4 views
0

Итак, я делаю сюжет в ggplot, который представляет собой комбинацию гистограммы и строки, и я хочу добавить легенду. Все, что я видел в R Cookbook о легендах в ggplot, включает в себя модификацию стандартной легенды, которая выкатывается, когда вы делаете один тип сюжета через ggplot. данных:Ggplot Legends - Odd Issue

x=c(0:10) 
y1=c(0,.5,1,1.5,2,2.5,3,3.5,4,4.5,5) 
y2=append(c(1:5),c(6,8,10,12,14,16)) 
mydata=as.data.frame(cbind(x,y1,y2)) 

вызов я делаю прямо сейчас, имеет вид:

ggplot(data=mydata)+geom_bar(aes(x=x,y=y1,col=c1),stat="identity") + 
geom_line(aes(x=x,y=y2,col=c2,group=1)) 

Я могу полностью сделать это как две диаграммы, но я бы предпочел сделать это с одним. Проблема в том, что легенда автоматически генерируется, когда есть только один тип сюжета, но нет, если есть два типа графиков. Мне было интересно, если есть какой-то способ иметь легенду с обоими типами там. Есть идеи?

+0

Не уверен, в чем проблема: не могли бы вы предоставить некоторые данные для примера – jalapic

+0

Проблема в том, что легенда автоматически генерируется, когда есть только один тип сюжета, но нет, если есть два типа графиков. Мне было интересно, если есть какой-то способ иметь легенду с обоими типами там. Я отредактировал свой вопрос соответствующим образом. – riders994

+0

Можете ли вы воссоздать с помощью 'mtcars' или что-то, если вы не можете опубликовать' mydata'? – hrbrmstr

ответ

1

Это:

library(ggplot2) 

set.seed(1492) 
mydata <- data.frame(x=c(0:10), 
        y1=c(0,.5,1,1.5,2,2.5,3,3.5,4,4.5,5), 
        y2=c(1:5, c(6,8,10,12,14,16)), 
        c1=sample(1:4, 11, replace=TRUE), 
        c2=sample(letters[1:4], 11, replace=TRUE)) 

gg <- ggplot(data=mydata) 
gg <- gg + geom_bar(aes(x=x, y=y1, fill=c1), stat="identity") 
gg <- gg + geom_line(aes(x=x, y=y2, col=c2, group=1)) 
gg 

работает отлично:

enter image description here

Вы получили условные обозначения для всех отображенных эстетики.

+0

Thats по существу то, что у меня есть, кроме c1 и c2 - скаляры, но легенды не генерируются. Все, что у меня есть, это линия и бар. – riders994

+0

Вы бросили R и/или RStudio и попробовали? Если это не проблема, ваш код должен быть каким-то другим. Возможно, вы используете настройку 'theme' где-то, где вы не помните настройки? – hrbrmstr

+0

Нет, ничего. Команда: 'ggplot (data = tempp) + geom_bar (aes (x = Employees, y = PortionofClients), stat =" identity ", fill = 3) + geom_line (aes (x = Employees, y = LTV.Share, group = 1), size = 1, col = 2) + ylab ("Partion") ', и это не создает легенду. Я думаю, что вместо этого я сделаю двойной график. – riders994