Измените размер линейного графика, поймите, как работает аргумент размера

Я делаю многострочный график с полосами ошибок. Если я не использую аргумент size, все в порядке:

# sample data
Response=runif(4)
ResponseMin=Response-Response/5
ResponseMax=Response+Response/5 
Cases=rep(c("Case1","Case2"),each=2)    
df=data.frame(x=1:2,Average=Response,Lower=ResponseMin,Upper=ResponseMax,Case=Cases)
# let's plot
library(ggplot2)
ggplot(df,aes(x=x,y=Average,colour=Case)) +
geom_line(aes(group=Case)) + 
geom_point() +
geom_errorbar(aes(ymin=Lower,ymax=Upper,width=0.25)) +
labs(y="foo",title="Some plot fu")

введите описание изображения здесь

Однако, когда я изменяю размер строки, я начинаю получать странные вещи:

ggplot(df,aes(x=x,y=Average,colour=Case)) +
geom_line(aes(group=Case, size = 1)) + 
geom_point() +
geom_errorbar(aes(ymin=Lower,ymax=Upper,width=0.25)) +
labs(y="foo",title="Some plot fu")

введите описание изображения здесь

Зачем нужна дополнительная запись "1" в легенде? И когда я добавляю аргумент size для столбцов ошибок, похоже, что размер строк остается неизменным, независимо от значения size:

ggplot(df,aes(x=x,y=Average,colour=Case)) +
geom_line(aes(group=Case, size = 1)) + 
geom_point() +
geom_errorbar(aes(ymin=Lower,ymax=Upper,width=0.25, size = 1)) +
labs(y="foo",title="Some plot fu")

введите описание изображения здесь

ggplot(df,aes(x=x,y=Average,colour=Case)) +
geom_line(aes(group=Case, size = 2)) + 
geom_point() +
geom_errorbar(aes(ymin=Lower,ymax=Upper,width=0.25, size = 2)) +
labs(y="foo",title="Some plot fu")

введите описание изображения здесь

Вы можете помочь мне разобраться, что здесь происходит?


person DeltaIV    schedule 18.12.2015    source источник
comment
Уберите размер из вашего сопоставления aes, например aes(ymin=Lower,ymax=Upper,width=0.25), size = 2, или добавьте scale_size_identity().   -  person lukeA    schedule 18.12.2015


Ответы (2)


Если вы устанавливаете size внутри aes, вы сопоставляете его с переменной

`1` = 1

а ggplot2 создает легенду. Если вы просто хотите установить размер, вы можете сделать это за пределами aes:

geom_line(aes(group=Case), size = 1)
person Roland    schedule 18.12.2015
comment
Это сработало, спасибо. У меня явно есть какое-то основное недопонимание ggplot2философии. Можете ли вы указать мне (возможно, бесплатные) ресурсы по этому поводу? Конечно, не R-помощь. Мне нужно понять общую парадигму этого инструмента, которую вы не получите, просто прочитав файлы справки по различным функциям. - person DeltaIV; 18.12.2015
comment
Я не знаю; Я выучил это по частям. Может быть, третья глава тезиса Хэдли станет хорошим началом? Или вы можете получить его книгу в библиотеке. - person Roland; 18.12.2015

попробуйте это, размер за пределами aes ()

ggplot(df,aes(x=x,y=Average,colour=Case)) +
    geom_line(aes(group=Case), size = 1) + 
    geom_point() +
    geom_errorbar(aes(ymin=Lower,ymax=Upper,width=0.25)) +
    labs(y="foo",title="Some plot fu")
person MLavoie    schedule 18.12.2015