[R] dual y-axis for ggplot

John miaojpm at gmail.com
Fri Oct 13 04:48:42 CEST 2017


Thanks, Eric! It works well.

2017-10-12 9:13 GMT-07:00 Eric Berger <ericjberger at gmail.com>:

> Hi John,
> You can try the following:
>
> override.linetype=c("twodash","solid")
> p <- ggplot(obs, aes(x = Timestamp))
> p <- p + geom_line(aes(y = air_temp, colour = "Temperature", linetype
> ="Temperature"))
> p <- p + geom_line(aes(y = rel_hum/5, colour = "Humidity",
> linetype="Humidity"))
> p <- p + guides(colour=guide_legend(override.aes=list(linetype=
> override.linetype)))
> p <- p + scale_colour_manual(values = c("blue", "red"))
> p <- p + scale_linetype_manual(values = c("twodash", "solid"),guide=FALSE)
> p
>
> I searched for help and used the info I found at this link:
> https://stackoverflow.com/questions/37140266/how-to-
> merge-color-line-style-and-shape-legends-in-ggplot
>
> HTH,
> Eric
>
>
>
> On Thu, Oct 12, 2017 at 10:14 AM, John <miaojpm at gmail.com> wrote:
>
>> Sorry let me clarify.
>> If I modify the line
>>  p <- p + geom_line(aes(y = air_temp, colour = "Temperature"))
>> by
>> p <- p + geom_line(aes(y = air_temp, colour = "Temperature", linetype
>> ="Temperature"))
>> and
>> p <- p + geom_line(aes(y = rel_hum/5, colour = "Humidity"))
>> by
>> p <- p + geom_line(aes(y = rel_hum/5, colour = "Humidity",
>> linetype="Humidity"))
>> and
>> p <- p + scale_linetype_manual(values = c("twodash", "solid")),
>>
>> I will have two lines with different color and different line type,
>>
>> but I will have two legends  (one with blue/red,solid, the other with two
>> dash/solid, black ).
>>
>> How can I have only one legend with blue/two dash and red/solid?
>>
>>
>>
>>
>> 2017-10-12 0:06 GMT-07:00 John <miaojpm at gmail.com>:
>>
>> > Hi,
>> >
>> >    To my knowledge, an excellent of ggplot with a second y-axis is
>> >
>> > https://rpubs.com/MarkusLoew/226759
>> >
>> >    In this example, the author uses two colors for the two lines, but
>> the
>> > line shapes are the same -- both are solid. Could each line have its own
>> > color as well as its own shape? For example, can I make the red line
>> with
>> > the linetype "twodash", while the blue line with the linetype "solid"?
>> >    For convenience, I copied the codes as follows.
>> >
>> > ########
>> > p <- ggplot(obs, aes(x = Timestamp))
>> >   p <- p + geom_line(aes(y = air_temp, colour = "Temperature"))
>> >
>> >   # adding the relative humidity data, transformed to match roughly the
>> > range of the temperature
>> >   p <- p + geom_line(aes(y = rel_hum/5, colour = "Humidity"))
>> >
>> >   # now adding the secondary axis, following the example in the help
>> file
>> > ?scale_y_continuous
>> >   # and, very important, reverting the above transformation
>> >   p <- p + scale_y_continuous(sec.axis = sec_axis(~.*5, name = "Relative
>> > humidity [%]"))
>> >
>> >   # modifying colours and theme options
>> >   p <- p + scale_colour_manual(values = c("blue", "red"))
>> >   p <- p + labs(y = "Air temperature [°C]",
>> >                 x = "Date and time",
>> >                 colour = "Parameter")
>> >   p <- p + theme(legend.position = c(0.8, 0.9))
>> > p
>> > ########
>> >
>> >    Thanks,
>> >
>> > John
>> >
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posti
>> ng-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list