r
  • bar-chart
  • 2014-03-06 2 views 1 likes 
    1

    У меня есть этот код, чтобы дать график, показанный ниже:Изменение брейки Y-оси в ggplot2

    d=ggplot(df, aes(x=Year, y=NAO_Index, width=.8)) + 
    + geom_bar(stat="identity", aes(fill=NAO_Index>0), position='identity', col = 'transparent') + 
    + theme_bw() + scale_fill_manual(values=c("royalblue", "firebrick3"), name="NAO Oscillation", labels=c("Negative", "Positive"), guide=guide_legend(reverse=TRUE)) + 
    theme(legend.position=c(0.06, 0.92)) + 
    + theme(axis.title.x=element_text(vjust=-0.2)) + 
    + geom_line(data=dfmoveav, aes(x=Year ,y=moveav)) + 
    + ylab("NAO Index") + 
    + ggtitle("NAO Index between 1860 and 2050") + 
    + scale_x_continuous(breaks=c(seq(1860,2050,10))) + 
    + scale_y_continuous(breaks=c(seq(-3.5,3.5,0.5))) 
    

    Я только действительно заинтересованные в последней строке. На графике ось y идет только от -3 до 2,5. Как мне получить от -3,5 до 3,5, так что это даже?

    Я уверен, что делаю простую ошибку, но не могу понять это!

    enter image description here Большое спасибо заранее.

    ответ

    2

    Вы почти находитесь. Попытайтесь установить лимиты.

    d=ggplot(df, aes(x=Year, y=NAO_Index, width=.8)) + 
    + geom_bar(stat="identity", aes(fill=NAO_Index>0), position='identity', col = 'transparent') + 
    + theme_bw() + scale_fill_manual(values=c("royalblue", "firebrick3"), name="NAO Oscillation", labels=c("Negative", "Positive"), guide=guide_legend(reverse=TRUE)) + 
    theme(legend.position=c(0.06, 0.92)) + 
    + theme(axis.title.x=element_text(vjust=-0.2)) + 
    + geom_line(data=dfmoveav, aes(x=Year ,y=moveav)) + 
    + ylab("NAO Index") + 
    + ggtitle("NAO Index between 1860 and 2050") + 
    + scale_x_continuous(breaks=c(seq(1860,2050,10))) + 
    + scale_y_continuous(breaks=c(seq(-3.5,3.5,0.5)), limits = c(-3.5, 3.5)) 
    

    Подробнее об этом here

    Чтобы отобразить строку в легенде следует карте переменная эстетическим. Но это не тривиально, и вы найдете ссылки, чтобы избежать такого подхода.

    df <- data.frame(year=factor(seq(1:10)), 
           nao = rnorm(10, 0, 2), 
           mov = rnorm(10, 0,3)) 
    df2 <- data.frame(year=factor(seq(1:10)), 
            mov = df$nao+rnorm(10, 0, 0.1), 
            g = .1) 
    ggplot() + 
        geom_bar(data = df, aes(x=year, y=nao, fill=nao > 0), width=.8, 
          stat="identity", position ='identity', col = 'transparent') + 
        geom_line(data = df2, aes(x = year, y = mov, group = g, size = g)) + 
        scale_fill_manual(values=c("royalblue", "firebrick3"), 
            name="NAO Oscillation", 
            labels=c("Negative", "Positive"), 
            guide=guide_legend(reverse=TRUE)) + 
        scale_size('Trend', range = 1, labels = 'Moving\naverage') + 
        ggtitle("NAO Index between 1860 and 2050") + 
        scale_y_continuous(breaks=c(seq(-5,5,0.5)), limits = c(-5, 5)) + 
        ylab("NAO Index") + 
        theme(legend.position = c(0.07, 0.80), 
         axis.title.x = element_text(vjust= -0.2), 
         legend.background = element_blank()) 
    

    ggplot bar and line

    Это не может быть лучшим подходом к карте переменных эстетике.

    +0

    Ahh так просто. Спасибо, что отлично работает. –

    +0

    Привет, Паоло, еще один вопрос, на который вы можете ответить. Как добавить запись легенды для линейного графика поверх баров, который объединен и помещен ниже существующей легенды? Заранее спасибо! –

    +0

    @EdwardArmstrong. Вам нужно сопоставить переменную с эстетикой линии. –

    Смежные вопросы