【问题标题】:R: bar ggplot2 error: Faceting variables must have at least one valueR:bar ggplot2错误:分面变量必须至少有一个值
【发布时间】:2021-05-13 03:32:30
【问题描述】:

我在尝试绘制图表时出错。这是错误信息。

'预计 2 件。缺少 1 行中用 NA 填充的部分 [24216]。错误:分面变量必须至少有一个值'

#Load Libaries

library(ggplot2)
library(dplyr)
options(scipen = 100000)
library(scales)
library(plotly)
library(tidyverse)

#Read dataset
ura <- read.csv('URAdata_new.csv') 

#Data cleaning
ura <- ura %>% mutate(Date.of.Sale_month = str_split(ura$Date.of.Sale, '-', simplify = T)[, 1],
               Date.of.Sale_year = str_split(ura$Date.of.Sale, '-', simplify = T)[, 2])

#Plotly Graph in issue
  
    Plot2 <- ggplotly(ura %>%
           separate(Date.of.Sale, c('Sale_year', 'Sale_month'), sep = '-') %>%
           filter(Sale_year %in% c(16, 17) & Postal.District %in% c(2, 5)) %>%
           group_by(Sale_year, Postal.District) %>%
           summarize(avg_price = mean(Price....)) %>%
           ggplot(aes(x = as.character(Postal.District), y = avg_price, 
                      fill = as.factor(Sale_year))) + 
           geom_col() + 
           facet_grid(~ as.factor(Sale_year)) +
           labs(x = 'Postal District', y = 'Average price', 
                title = 'Comparison of unit prices in district 2 and 5 between 2016 and 2017') +
           scale_fill_discrete(name = "Year of sale", labels = c("2016", "2017"))+
           theme(
             plot.title = element_text(colour="red",size=10, face="bold.italic",hjust = 0.5),
             axis.title.x = element_text(colour="blue",size=14, face="bold"),
             axis.title.y = element_text(colour="green",size=14, face="bold"), 
             legend.title=element_text(size=8))+
           scale_y_continuous(name="Average Price",labels = comma), main="foo")
Plot2

这些是我上面的代码。

输入(头部(ura,20)

structure(list(Project.Name = c("V ON SHENTON", "V ON SHENTON", 
"STIRLING RESIDENCES", "PARC CLEMATIS", "STIRLING RESIDENCES", 
"ONE PEARL BANK", "TWIN VEW", "WHISTLER GRAND", "WHISTLER GRAND", 
"WHISTLER GRAND", "WHISTLER GRAND", "WHISTLER GRAND", "KENT RIDGE HILL RESIDENCES", 
"KENT RIDGE HILL RESIDENCES", "KENT RIDGE HILL RESIDENCES", "KENT RIDGE HILL RESIDENCES", 
"KENT RIDGE HILL RESIDENCES", "KENT RIDGE HILL RESIDENCES", "KENT RIDGE HILL RESIDENCES", 
"STIRLING RESIDENCES"), Street.Name = c("SHENTON WAY", "SHENTON WAY", 
"STIRLING ROAD", "JALAN LEMPENG", "STIRLING ROAD", "PEARL BANK", 
"WEST COAST VALE", "WEST COAST VALE", "WEST COAST VALE", "WEST COAST VALE", 
"WEST COAST VALE", "WEST COAST VALE", "SOUTH BUONA VISTA ROAD", 
"SOUTH BUONA VISTA ROAD", "SOUTH BUONA VISTA ROAD", "SOUTH BUONA VISTA ROAD", 
"SOUTH BUONA VISTA ROAD", "SOUTH BUONA VISTA ROAD", "SOUTH BUONA VISTA ROAD", 
"STIRLING ROAD"), Type = c("Apartment", "Apartment", "Apartment", 
"Apartment", "Apartment", "Apartment", "Apartment", "Apartment", 
"Apartment", "Apartment", "Apartment", "Apartment", "Apartment", 
"Apartment", "Apartment", "Apartment", "Apartment", "Apartment", 
"Apartment", "Apartment"), Postal.District = c(1L, 1L, 3L, 5L, 
3L, 3L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 3L
), Market.Segment = c("CCR", "CCR", "RCR", "OCR", "RCR", "RCR", 
"OCR", "OCR", "OCR", "OCR", "OCR", "OCR", "RCR", "RCR", "RCR", 
"RCR", "RCR", "RCR", "RCR", "RCR"), Tenure = c("99 yrs lease commencing from 2011", 
"99 yrs lease commencing from 2011", "99 yrs lease commencing from 2017", 
"99 yrs lease commencing from 2019", "99 yrs lease commencing from 2017", 
"99 yrs lease commencing from 2019", "99 yrs lease commencing from 2017", 
"99 yrs lease commencing from 2018", "99 yrs lease commencing from 2018", 
"99 yrs lease commencing from 2018", "99 yrs lease commencing from 2018", 
"99 yrs lease commencing from 2018", "99 yrs lease commencing from 2018", 
"99 yrs lease commencing from 2018", "99 yrs lease commencing from 2018", 
"99 yrs lease commencing from 2018", "99 yrs lease commencing from 2018", 
"99 yrs lease commencing from 2018", "99 yrs lease commencing from 2018", 
"99 yrs lease commencing from 2017"), Type.of.Sale = c("Resale", 
"Resale", "New Sale", "New Sale", "New Sale", "New Sale", "New Sale", 
"New Sale", "New Sale", "New Sale", "New Sale", "New Sale", "New Sale", 
"New Sale", "New Sale", "New Sale", "New Sale", "New Sale", "New Sale", 
"New Sale"), No..of.Units = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), Price.... = c(3548000L, 
3490000L, 1987000L, 1745000L, 1227000L, 1702000L, 1899000L, 704380L, 
1129960L, 1145540L, 1473540L, 1421880L, 1367000L, 1360000L, 3000000L, 
870000L, 1711000L, 899000L, 870000L, 1249000L), Nett.Price.... = c("-", 
"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
"-", "-", "-", "-", "-", "-"), Area..Sqft. = c(1518L, 1518L, 
1055L, 1044L, 635L, 700L, 1249L, 441L, 764L, 764L, 990L, 958L, 
775L, 786L, 1776L, 484L, 958L, 484L, 484L, 635L), Type.of.Area = c("Strata", 
"Strata", "Strata", "Strata", "Strata", "Strata", "Strata", "Strata", 
"Strata", "Strata", "Strata", "Strata", "Strata", "Strata", "Strata", 
"Strata", "Strata", "Strata", "Strata", "Strata"), Floor.Level = c("46 to 50", 
"46 to 50", "26 to 30", "06 to 10", "31 to 35", "21 to 25", "26 to 30", 
"21 to 25", "21 to 25", "21 to 25", "31 to 35", "31 to 35", "01 to 05", 
"01 to 05", "01 to 05", "01 to 05", "01 to 05", "01 to 05", "01 to 05", 
"16 to 20"), Unit.Price...psf. = c(2338L, 2299L, 1884L, 1671L, 
1932L, 2433L, 1521L, 1596L, 1479L, 1499L, 1488L, 1484L, 1764L, 
1731L, 1689L, 1796L, 1786L, 1856L, 1796L, 1967L), Date.of.Sale = c("20-Jun", 
"20-Jun", "20-Jun", "20-Jun", "20-Jun", "20-Jun", "20-Jun", "20-Jun", 
"20-Jun", "20-Jun", "20-Jun", "20-Jun", "20-Jun", "20-Jun", "20-Jun", 
"20-Jun", "20-Jun", "20-Jun", "20-Jun", "20-Jun")), row.names = c(NA, 
20L), class = "data.frame")

Google 表格链接:https://docs.google.com/spreadsheets/d/1QFXNUpgEjjPGdfXUwvzYIadnoxcD2-Ba6cw6BqrxfO8/edit

【问题讨论】:

    标签: r ggplot2 dplyr plotly


    【解决方案1】:

    您不需要同时运行str_split 代码和separate 代码,只运行其中一个。

    library(tidyverse)
    library(plotly)
    
    ura <- read.csv('URA Dataset  - URAdata_new.csv')
    
    ggplotly(ura %>%
         separate(Date.of.Sale, c('Sale_year', 'Sale_month'), sep = '-') %>%
         filter(Sale_year %in% c(16, 17) & Postal.District %in% c(2, 5)) %>%
         group_by(Sale_year, Postal.District) %>%
         summarize(avg_price = mean(Price....)) %>%
         ggplot(aes(x = as.character(Postal.District), y = avg_price, 
                    fill = as.factor(Sale_year))) + 
         geom_col() + 
         facet_grid(~ as.factor(Sale_year)) +
         labs(x = 'Postal District', y = 'Average price', 
              title = 'Comparison of unit prices in district 2 and 5 between 2016 and 2017') +
         scale_fill_discrete(name = "Year of sale", labels = c("2016", "2017"))+
         theme(
           plot.title = element_text(colour="red",size=10, face="bold.italic",hjust = 0.5),
           axis.title.x = element_text(colour="blue",size=14, face="bold"),
           axis.title.y = element_text(colour="green",size=14, face="bold"), 
           legend.title=element_text(size=8))+
         scale_y_continuous(name="Average Price",labels = comma), main = 'foo')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 2013-02-23
      • 2019-04-27
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多