我需要分析一段时间内的天气状况数据。我的数据示例如下:
# Example dataset
Quarter <- c("Q1", "Q2", "Q2", "Q2", "Q3", "Q4")
Weather <- c("cloudy", "cloudy", "sunny", "cloudy", "sunny", "cloudy")
Duration <- c(16, 10, 2, 5, 15, 14)
WeatherCondData <- data.frame(Quarter, Weather, Duration, stringsAsFactors = F)
我手动设置因子顺序,然后使用以下代码在ggplot2
中绘图:
# Make quarter a factor
WeatherCondData$Quarter <- as.factor(WeatherCondData$Quarter)
# Plot
ggplot(WeatherCondData, aes(x = Quarter, y = Duration, fill = Weather)) +
geom_bar(stat = "identity", position = "stack") +
coord_flip() +
scale_x_discrete(limits = rev(levels(WeatherCondData$Quarter))) +
theme_classic() +
theme(legend.position = "bottom")
但是,我希望根据季度的时间长度显示天气状况持续多长时间。例如,在Q2中,我希望geom_bar
的第一部分为红色10分钟,表示多云情况,然后在12分钟标记处变为蓝色2分钟(表示天气晴朗)然后返回最后5分钟为蓝色或混浊。
从本质上讲,我不希望在每个季度显示每个条件的总持续时间,但在条件发生变化时会突出显示。 这可能是使用ggplot2吗?
答案 0 :(得分:1)
要更改堆叠条的排序,您需要更改分组:
WeatherCondData$order <- factor(1:nrow(WeatherCondData))
ggplot(WeatherCondData, aes(x = Quarter, y = Duration, fill = Weather, group = rev(order))) +
geom_col() +
coord_flip() +
scale_x_discrete(limits = rev(levels(WeatherCondData$Quarter))) +
theme_classic() +
theme(legend.position = "bottom")