我需要繪制時間序列圖,但事實證明我使用的資料非常具有挑戰性。
理想情況下,我想要一個看起來像這樣的圖表:
但我的看起來像這樣:

我嘗試了一系列不同的東西,但沒有一個奏效。
資料集可以在
我嘗試過的一些代碼包括
ggplot( aes(x=date, y=northEast))
geom_area(fill="#69b3a2", alpha=0.5)
geom_line(color="#69b3a2")
ylab("test")
theme_ipsum()
ggplot(covidData2)
geom_line(
mapping = aes(x = weekBeginning, y=northEast, group=northEast)
)
任何幫助將不勝感激!
uj5u.com熱心網友回復:
在繪制資料之前,您需要整理資料。如果您查看您的資料框,所有“數字”列都已被解釋為字符向量,因為列名是嵌套的,因此出現在前幾行中。您需要合并這些并將它們轉換為列名。然后,您需要將數字列轉換為數字。最后,您需要決議日期,因為 ggplot 只會將句點讀取為字符向量:
library(readxl)
library(lubridate)
library(ggplot2)
library(hrbrthemes)
wb <- read_xlsx(path.expand("~/covid.xlsx"), sheet = "Table 9")
df <- as.data.frame(wb)
df[1, 1] <- ""
for(i in 2:length(df)) {
if(is.na(df[1, i])) df[1, i] <- df[1, i - 1]
}
nms <- trimws(paste(df[1,], df[2,]))
df <- df[-c(1:2),]
names(df) <- nms
df <- df[sapply(df, function(x) !all(is.na(x)))]
df[-1] <- lapply(df[-1], as.numeric)
df <- head(df, -3)
df$Period <- dmy(substr(df$Period, 1, 10))
現在我們可以繪制:
ggplot(df, aes(x = Period, y = `North East Rate`))
geom_area(fill = "#69b3a2", alpha=0.5)
geom_line(color = "#69b3a2")
ylab("Rate per 100,000")
xlab("")
theme_ipsum()

由reprex 包創建于 2022-03-08 (v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/440262.html
