Home > Enterprise >  Adding a secondary y-axis removing geom_col() columns from plot
Adding a secondary y-axis removing geom_col() columns from plot

Time:08-30

I have the 2 dataframes below:

ct2<-structure(list(Year = c(1975, 1985, 1990, 2000, 2000, 2000, 2000, 
2000, 2000, 2000, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 
2005, 2005, 2005, 2005, 2010, 2015, 2015), name = c("Association of Southeast Asian Nations (ASEAN) Preferential Trading Arrangements (PTA)", 
"Global System of Trade Preferences (GSTP)", "Association of Southeast Asian Nations (ASEAN) FTA", 
"Association of Southeast Asian Nations (ASEAN) China", "Australia Singapore", 
"EFTA Singapore", "Japan Singapore", "Jordan Singapore", "New Zealand Singapore", 
"Singapore US", "Association of Southeast Asian Nations (ASEAN) Australia New Zealand FTA (AANZFTA)", 
"Association of Southeast Asian Nations (ASEAN) Goods", "Association of Southeast Asian Nations (ASEAN) India", 
"Association of Southeast Asian Nations (ASEAN) Japan", "Association of Southeast Asian Nations (ASEAN) Korea", 
"China Singapore", "Gulf Cooperation Council (GCC) Singapore", 
"India Singapore", "Korea Singapore", "Panama Singapore", "Peru Singapore", 
"Trans Pacific Strategic EPA", "Costa Rica Singapore", "EC Singapore", 
"Transpacific Partnership (TPP)"), number = c("65", "461", "64", 
"67", "82", "396", "520", "534", "631", "658", "66", "69", "70", 
"71", "72", "228", "475", "493", "550", "641", "644", "679", 
"814", "874", "899"), year = c(1977, 1988, 1992, 2004, 2003, 
2002, 2002, 2004, 2000, 2003, 2009, 2009, 2009, 2008, 2006, 2008, 
2008, 2005, 2005, 2006, 2008, 2005, 2010, 2018, 2016), scope_ntis = c(23, 
3, 7, 23, 23, 28, 6, 23, 8, 33, 33, 23, 23, 24, 23, 23, 5, 6, 
4, 8, 6, 11, 18, 32, 41), count = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), country = c("Singapore", 
"Singapore", "Singapore", "Singapore", "Singapore", "Singapore", "Singapore", "Singapore", "Singapore", "Singapore", "Singapore", 
"Singapore", "Singapore", "Singapore", "Singapore", "Singapore", 
"Singapore", "Singapore", "Singapore", "Singapore", "Singapore", 
"Singapore", "Singapore", "Singapore", "Singapore"), pta_count = c(1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1)), row.names = c(NA, 25L), class = "data.frame")

dt2<-structure(list(Year = c(1950, 1955, 1960, 1965, 1970, 1975, 1980, 
1985, 1990, 1995, 2000, 2005, 2010, 2015), pta_count = c(2, 4, 
10, 14, 24, 18, 13, 19, 84, 100, 105, 96, 47, 15), scope_ntis_mean = c(3.5, 
9.5, 5, 9.57, 4.54, 11.72, 6.23, 7.05, 17.11, 15.16, 15.28, 17.64, 
22.96, 26.87), scope_ntis_sd = c(0.707106781186548, 11.7046999107196, 
6.25388767976457, 8.72409824049971, 4.56812364359683, 9.2278705436976, 
5.11784209333462, 10.7779284971676, 13.2864799994027, 12.9643801053175, 
12.1295056958191, 12.7964796077233, 12.4375963125981, 14.5791762782532
), scope_ntis_se = c(0.822426813475736, 9.62625905026287, 3.25294959458435, 
3.83516264302846, 1.53376734188638, 3.57760589505535, 2.33476117415722, 
4.06710846230115, 2.38450123589789, 2.13245076374089, 1.94704374916827, 
2.14823678655809, 2.98410970181292, 6.19176713030084), scope_ntis_cil = c(2.68, 
-0.13, 1.75, 5.74, 3.01, 8.14, 3.9, 2.99, 14.72, 13.03, 13.33, 
15.49, 19.97, 20.67), scope_ntis_ciu = c(4.32, 19.13, 8.25, 13.41, 
6.08, 15.3, 8.57, 11.12, 19.49, 17.29, 17.22, 19.78, 25.94, 33.06
)), row.names = c(NA, -14L), class = c("tbl_df", "tbl", "data.frame"

and I use this code:

p<-ct2 %>% filter(country=="Singapore") %>%
  ggplot(aes(Year,scope_ntis)) geom_jitter(
    aes(text = paste0("Name of PTA: ", name, "\nYear of Signature: ", Year,
                      "\nNTI-Scope: ", scope_ntis))
  ) 
  geom_col(
    aes(y=pta_count/(max(pta_count)/max(dt2$scope_ntis_ciu)),
        text = paste0("Year of Signature: ", Year, "\nNTI Scope (mean): ",
                      format(round(pta_count/(max(pta_count)/max(dt2$scope_ntis_ciu)), 2), nsmall = 2)
        )),
    fill="darkolivegreen",alpha=0.3,width=3
    
  ) 
  xlim(c(1950,2020))

to create a plot

enter image description here

but when I try to add a secondary axis with

p<-ct2 %>% filter(country=="Singapore") %>%
  ggplot(aes(Year,scope_ntis)) geom_jitter(
    aes(text = paste0("Name of PTA: ", name, "\nYear of Signature: ", Year,
                      "\nNTI-Scope: ", scope_ntis))
  ) 
  geom_col(
    aes(y=pta_count/(max(pta_count)/max(dt2$scope_ntis_ciu)),
        text = paste0("Year of Signature: ", Year, "\nNTI Scope (mean): ",
                      format(round(pta_count/(max(pta_count)/max(dt2$scope_ntis_ciu)), 2), nsmall = 2)
        )),
    fill="darkolivegreen",alpha=0.3,width=3
    
  ) 
  xlim(c(1950,2020)) 
  scale_y_continuous(
    limits=c(0,33),
    # Features of the first axis
    name = "NTI Scope\n(scope measures the sum of all NTIs mentioned in a PTA,\ndot indicated one PTA)",
    
    # Add a second axis and specify its features
    sec.axis = sec_axis( ~ . * max(dt2$pta_count)/max(dt2$scope_ntis_ciu), name="PTA Count\n(green columns indicate number of PTAs\n signed in given 5-year intervall)")
  )

the green colums are diappeared

enter image description here

CodePudding user response:

You should remove the limits in your scale_y_continuous. This removes your bars because they are higher than your limits:

library(ggplot2)
library(dplyr)
p<-ct2 %>% filter(country=="Singapore") %>%
  ggplot(aes(Year,scope_ntis)) geom_jitter(
    aes(text = paste0("Name of PTA: ", name, "\nYear of Signature: ", Year,
                      "\nNTI-Scope: ", scope_ntis))
  ) 
  geom_col(
    aes(y=pta_count/(max(pta_count)/max(dt2$scope_ntis_ciu)),
        text = paste0("Year of Signature: ", Year, "\nNTI Scope (mean): ",
                      format(round(pta_count/(max(pta_count)/max(dt2$scope_ntis_ciu)), 2), nsmall = 2)
        )),
    fill="darkolivegreen",alpha=0.3,width=3
  ) 
  xlim(c(1950,2020)) 
  scale_y_continuous(
    #limits=c(0,33),
    # Features of the first axis
    name = "NTI Scope\n(scope measures the sum of all NTIs mentioned in a PTA,\ndot indicated one PTA)",
    
    # Add a second axis and specify its features
    sec.axis = sec_axis( ~ . * max(dt2$pta_count)/max(dt2$scope_ntis_ciu), name="PTA Count\n(green columns indicate number of PTAs\n signed in given 5-year intervall)")
  )
#> Warning: Ignoring unknown aesthetics: text
#> Ignoring unknown aesthetics: text
p

Created on 2022-08-24 with reprex v2.0.2

  • Related