首页 > 解决方案 > ggplot2 是否需要数据框才能正确绘图?

问题描述

我每天绘制 30 个数据点。然而,当我这样做时,我最终得到的情节点比我拥有的数据多得多。我没有将 harMetDaily.09.11 转换为数据框。如果我将其作为一条线而不是一条有 30 个点的线来执行,它会显示数百个并且看起来确实不平滑 - 鉴于问题存在于各种图中,我认为它存在于我的数据格式中。这些图本身具有正确的 x 和 y 轴以及标签和格式——这只是在数据显示中

# daily HARV met data, 2009-2011
harMetDaily.09.11 <- read.csv(
  file="C:/Users/12083/Documents/orbis/NEON-DS-Met-Time-Series/HARV/FisherTower-Met/Met_HARV_Daily_2009_2011.csv",
  stringsAsFactors = FALSE
)

# convert date to Date  class
harMetDaily.09.11$date <- as.Date(harMetDaily.09.11$date)

----情节聊天------------------------------------------- ----------------

chatdaily <- ggplot(harMetDaily.09.11, aes(date, chat)) +
  geom_point() +
  ggtitle("Daily Library Transactions") +
  xlab("Date") + ylab("Transactions") +
  scale_x_date(labels=date_format ("%m-%y"))+
  theme(plot.title = element_text(lineheight=.8, face="bold",
                                  size = 20)) +
  theme(text = element_text(size=18))

chatdaily

标签: rggplot2

解决方案


对我来说,情节看起来并没有超出预期。

下面是一个可重现的例子,我也省略了所有没有日期的数据行,只是为了检查。有 341 行具有有效日期,对我来说情节看起来很正确。

library(tidyverse)

data_url <- "https://raw.githubusercontent.com/karl1776/graph/master/Met_HARV_Daily_2009_2011.csv"


dt <- url(data_url) %>% 
  read.csv(stringsAsFactors = FALSE, header = TRUE) %>%
  mutate(date = as.Date(date, format = "%m/%d/%Y")) %>% 
  filter(!is.na(date)) 

ggplot(dt, aes(date, chat)) +
  geom_point() +
  labs(title = "Daily Library Transactions",
       x = "Date",
       y = "Transactions") +
  scale_x_date(date_labels="%m-%y")+
  theme(plot.title = element_text(lineheight=.8, face="bold",
                                  size = 20),
        text = element_text(size=18))

reprex 包(v0.3.0)于 2020-06-26 创建


推荐阅读