# [R] ggplot adjust two y-axis

Charles-Édouard Giguère ce@g|guere @end|ng |rom gm@||@com
Fri Nov 24 18:07:33 CET 2023

```Hi,
Just find a scaling factor that would make the two sets of data comparable.
Here I divided the second row by 5 and did the same for the second axis.
Charles-Édouard
F1 <- as.table(matrix(c(50,11,6,17,16,3,1,2237,611,403,240,280,0,0), 2,7))
barplot(F1, beside = TRUE, col = c("blue", "grey")) axis(2,
at=c(0,10,20,30,40,50,60, labels=c(0,10,20,30,40,50,60))) axis(4, at =
c(0,500,1000,1500,2000,2500), labels =
c(0,500,1000,1500,2000,2500))

-----Message d'origine-----
De : sibylle.stoeckli using gmx.ch <sibylle.stoeckli using gmx.ch>
Envoyé : 24 novembre 2023 11:27
À : 'Charles-Édouard Giguère' <ce.giguere using gmail.com>; r-help using r-project.org
Objet : RE: [R] ggplot adjust two y-axis

Dear Charles-Edouard

Thanks a lot. Yes indeed barplot sounds excellent.

Unfortunately, the scale of the smaller axis is fixed, even If I am able to
draw to axes. The idea is to expand the scale to the scale to the second
axis for comparison.
F1 <- as.table(matrix(c(50,11,6,17,16,3,1,2237,611,403,240,280,0,0), 2,7))
barplot(F1, beside = TRUE, col = c("blue", "grey")) axis(2,
at=c(0,10,20,30,40,50,60, labels=c(0,10,20,30,40,50,60))) axis(4, at =
c(0,500,1000,1500,2000,2500), labels =
c(0,500,1000,1500,2000,2500))

Kind regards
Sibylle

-----Original Message-----
From: Charles-Édouard Giguère <ce.giguere using gmail.com>
Sent: Friday, November 24, 2023 3:57 PM
To: sibylle.stoeckli using gmx.ch; r-help using r-project.org
Subject: RE: [R] ggplot adjust two y-axis

Hi,
I don't know the axis mecanism well enough in ggplot but using the original
barplot function you can add an axis on the right using the axis function.

Here is an example:

test <- as.table(matrix(c(2,10,3,11), 2,2)) barplot(test, beside = TRUE, col
= scales::brewer_pal(palette = 1)(2)) axis(4, at = c(0, 5,  10), labels =
c(0,50,100))

-----Message d'origine-----
De : sibylle.stoeckli using gmx.ch <sibylle.stoeckli using gmx.ch> Envoyé : 24 novembre
2023 09:27 À : 'Charles-Édouard Giguère' <ce.giguere using gmail.com>;
r-help using r-project.org Objet : RE: [R] ggplot adjust two y-axis

Dear Charles-Edouard

Thanks a lot.
So no way in R to just simply have one ggplot with to axis as in Excel
(attachment)?

Kind regards
Sibylle

-----Original Message-----
From: Charles-Édouard Giguère <ce.giguere using gmail.com>
Sent: Friday, November 24, 2023 3:14 PM
To: sibylle.stoeckli using gmx.ch; r-help using r-project.org
Subject: RE: [R] ggplot adjust two y-axis

You could also use more simply facet_wrap(~ Studien_Flaeche).
Charles-Édouard

-----Message d'origine-----
De : Charles-Édouard Giguère <ce.giguere using gmail.com> Envoyé : 24 novembre
2023 09:11 À : sibylle.stoeckli using gmx.ch; r-help using r-project.org Objet : RE: [R]

Hi Sibylle,
For that kind of data with two different scales, I generally use two graphs
that I name gg1 and gg2 and join them using gridExtra::grid.arrange(gg1,
gg2). This way, the red part of your graph is easier to interpret.
Have a nice day,
Charles-Édouard

-----Message d'origine-----
De : R-help <r-help-bounces using r-project.org> De la part de
sibylle.stoeckli using gmx.ch Envoyé : 24 novembre 2023 05:52 À :
r-help using r-project.org Objet : [R] ggplot adjust two y-axis

Dear R-users

Is it possible to adjust two y-axis in a ggplot differently?
- First y axis (0-60)
- Second y axis (0-2500)

### Figure 1
ggplot(Fig1,aes(BFF,Wert,fill=Studien_Flaeche))+
geom_bar(stat="identity",position='dodge')+
scale_y_continuous(name="First Axis", sec.axis=sec_axis(trans=~.*50,
name="Second Axis"))+
scale_fill_brewer(palette="Set1")

Thanks a lot
Sibylle

```