Skip to content
Fix Code Error

ggplot by group with filter()

June 28, 2021 by Code Error
Posted By: Anonymous

I have big dataset with the following format:

   structure(list(LOCATION = c("CAN", "CAN", "CAN", "CAN", "CAN", 
"CAN", "CAN", "CAN", "CAN", "CAN"), Country = c("Canada", "Canada", 
"Canada", "Canada", "Canada", "Canada", "Canada", "Canada", "Canada", 
"Canada"), SUBJECT = c("ULABUL99", "ULABUL99", "ULABUL99", "ULABUL99", 
"ULABUL99", "ULABUL99", "ULABUL99", "ULABUL99", "ULABUL99", "ULABUL99"
), Subject = c("Unit Labour Cost", "Unit Labour Cost", "Unit Labour Cost", 
"Unit Labour Cost", "Unit Labour Cost", "Unit Labour Cost", "Unit Labour Cost", 
"Unit Labour Cost", "Unit Labour Cost", "Unit Labour Cost"), 
    SECTOR = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), Sector = c("Total Economy", 
    "Total Economy", "Total Economy", "Total Economy", "Total Economy", 
    "Total Economy", "Total Economy", "Total Economy", "Total Economy", 
    "Total Economy"), MEASURE = c("ST", "ST", "ST", "ST", "ST", 
    "ST", "ST", "ST", "ST", "ST"), Measure = c("Level, ratio or national currency", 
    "Level, ratio or national currency", "Level, ratio or national currency", 
    "Level, ratio or national currency", "Level, ratio or national currency", 
    "Level, ratio or national currency", "Level, ratio or national currency", 
    "Level, ratio or national currency", "Level, ratio or national currency", 
    "Level, ratio or national currency"), FREQUENCY = c("A", 
    "A", "A", "A", "A", "A", "A", "A", "A", "A"), Frequency = c("Annual", 
    "Annual", "Annual", "Annual", "Annual", "Annual", "Annual", 
    "Annual", "Annual", "Annual"), TIME = 1970:1979, Time = 1970:1979, 
    Value = c(0.1304592, 0.1357066, 0.1430287, 0.1521136, 0.1752398, 
    0.2018611, 0.2193767, 0.2347496, 0.2470616, 0.2663881), Flag.Codes = c("E", 
    "E", "E", "E", "E", "E", "E", "E", "E", "E"), Flags = c("Estimated value", 
    "Estimated value", "Estimated value", "Estimated value", 
    "Estimated value", "Estimated value", "Estimated value", 
    "Estimated value", "Estimated value", "Estimated value")), row.names = c(NA, 
10L), class = "data.frame")

And I want to draw time plot like the following (for each sector group in a particular country’s particular subject, in this case, Germany’s Labour Income Share)
enter image description here

I tried to code as follows:

library(ggplot2)
library(tidyr)

df <- read.csv("/Users/ulc.csv", header = TRUE)
fsector = factor(df$SECTOR)
df %>%
  filter(df$MEASURE =="ST",
df$SUBJECT == "ULAIRU99",
         df$LOCATION == "DEU") %>% 
ggplot(aes(x = df$year, y = df$value, color =  fsector, linetype = fsector)) +
scale_color_manual(labels=c("Sec 1","Sec 2", "Sec 3", "Sec 4", "Sec 5", "Sec 6", "Sec 7", "Sec 8"), values = 1:8) + 
scale_linetype_manual(labels=c("Sec 1","Sec 2", "Sec 3", "Sec 4", "Sec 5", "Sec 6", "Sec 7", "Sec 8"), values = 1:8) + 
theme(legend.position = c(0.8, 0.3), legend.title = element_blank()) +
ylab("LIS of Germany by sector") + xlab("year") 

But the result does not show any plots and seems like a lot of elements are missing in my code. Maybe should I add geom_line() for each sector? But there seems much simpler way. Any help would be appreciated.

Solution

You can try the following code –

library(dplyr)
library(ggplot2)

df %>%
  filter(MEASURE =="ST",SUBJECT == "ULAIRU99",LOCATION == "DEU") %>%
  mutate(SECTOR = factor(SECTOR)) %>%
  ggplot(aes(x = TIME, y = Value, color =  SECTOR, linetype = SECTOR)) +
  geom_line() + 
  scale_color_manual(labels=c("Sec 1","Sec 2", "Sec 3", "Sec 4", "Sec 5", "Sec 6", "Sec 7", "Sec 8"), values = 1:8) + 
  scale_linetype_manual(labels=c("Sec 1","Sec 2", "Sec 3", "Sec 4", "Sec 5", "Sec 6", "Sec 7", "Sec 8"), values = 1:8) + 
  theme(legend.position = c(0.8, 0.3), legend.title = element_blank()) +
  ylab("LIS of Germany by sector") + xlab("year") 
Answered By: Anonymous

Related Articles

  • How to properly do JSON API GET requests and assign output…
  • How to parse JSON with XE2 dbxJSON
  • Azure Availability Zone ARM Config
  • The 'compilation' argument must be an instance of…
  • Search match multiple values in single field in…
  • Event Snippet for Google only shows one event while testing…
  • Avoid creating new session on each axios request laravel
  • Why does this Azure Resource Manager Template fail…
  • loop and eliminate unwanted lines with beautiful soup
  • mongodb group values by multiple fields

Disclaimer: This content is shared under creative common license cc-by-sa 3.0. It is generated from StackExchange Website Network.

Post navigation

Previous Post:

Sidebar hidden by default instead of showing

Next Post:

MS Access Query SQL

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • Get code errors & solutions at akashmittal.com
© 2022 Fix Code Error