【发布时间】:2021-01-16 05:52:07
【问题描述】:
我目前正在为一个大学项目开发一款 COVID-19 Germany Shiny App。 我正在尝试制作一个条形图,显示德国不同区域级别的每日感染数。这不是 Shiny App 的具体问题,更多的是 ggplot。我在没有 Shiny App 环境的情况下重现了这个问题。 我的基本代码如下:
require(tidyverse)
library(tidyverse)
require(lubridate)
library(lubridate)
library(readr)
require(zoo)
library(zoo)
data <- read_csv("https://opendata.arcgis.com/datasets/dd4580c810204019a7b8eb3e0b329dd6_0.csv")
## Data Coding data Datensatz
data$Meldedatum <- ymd_hms(data$Meldedatum)
data$Meldedatum <- date(data$Meldedatum)
# Label Deutschland
data$label_de <- paste("Deutschland")
# Label Deutschland - Alter
data$label_de_age <- paste(data$label_de, data$Altersgruppe)
# Label Bundesland Alter
data$label_bl_age <- paste(data$Bundesland, data$Altersgruppe)
# Label SK/LK Alter
data$label_sklk_age <- paste(data$Landkreis, data$Altersgruppe)
#Data Long
data_long <- data[c( "Meldedatum", "AnzahlFall","Bundesland", "Landkreis" ,"label_de_age", "label_bl_age", "label_sklk_age")]
data_long$Deutschland <- "Deutschland"
data_long<- pivot_longer(data_long, -c( Meldedatum, AnzahlFall), values_to = "Gebiet")
data_long<- data_long[c("Meldedatum", "AnzahlFall", "Gebiet")]
data_long$Gebiet 列的特定新标签对我闪亮的应用程序很重要。
现在,如果我想绘制每天的感染数,例如没有position = "dodge" 的“Deutschland”(德国)和“Bayern”(巴伐利亚),我的图表如下所示,一开始还不错。
# Plot Deutschland and Bayern
ggplot(data = subset(data_long, Gebiet %in% c("Deutschland", "Bayern" )),
mapping = aes(
x= Meldedatum,
y= AnzahlFall,
fill = Gebiet
) )+
geom_bar(stat = "identity")
但如果我现在将position = "dodge" 行添加到geom_bar(),我的情节就会中断。如下所示。
# Plot Deutschland and Bayern with dodge
ggplot(data = subset(data_long, Gebiet %in% c("Deutschland", "Bayern" )),
mapping = aes(
x= Meldedatum,
y= AnzahlFall,
fill = Gebiet
) )+
geom_bar(stat = "identity", position = "dodge")
有人知道为什么会发生这种情况以及如何解决这个问题吗?
感谢您的帮助。
【问题讨论】:
-
为了minimal reproducible example 的 minimal 部分,如果问题不是关于重塑数据,只需发布您正在尝试的任何数据框的示例绘制足以重现问题的情节。这使我们免于下载未知大小的文件以及十几行代码,并帮助您专注于实际问题可能是什么
-
感谢卡米尔的建议。由于这是我关于 stackoverflow 的第一个问题,我将在以后的帖子中关注它。感谢您编辑我的图片。
-
你可以edit帖子清理一下