r - 时间序列条形图重新排序
问题描述
我正在处理以下脚本,我想按条形图的值按降序重新排序条形图。
library(tidyverse)
library(lubridate)
library(ggplot2)
#df <- read_csv('dataframe.csv')
df %>%
mutate(date=mdy(date), year=year(date), year = year + (date >= mdy(paste0("10/01/", year))))%>%
group_by(year) %>%
summarize(avg = mean(flow)) -> df
y <- df$avg
x <- ymd(sprintf("%d-01-01",df$year))
d <- data.frame(x = x, y = y)
# interpolate values from zero to y and create corresponding number of x values
vals <- lapply(d$y, function(y) seq(0, y, by = 0.1))
y <- unlist(vals)
mid <- rep(d$x, lengths(vals))
d2 <- data.frame(x = mid - 100,
xend = mid + 100,
y = y,
yend = y)
ggplot(data = d2, aes(x = x, xend = xend, y = y, yend = yend, color = y)) +
geom_segment(size = 2)
我想按值降序重新排序条形图
数据集可以通过以下链接找到
https://drive.google.com/file/d/11PVub9avzMFhUz02cHfceGh9DrlVQDbD/view?usp=sharing
请协助。
解决方案
要排列数据,您需要调整因子水平。您可以arrange
基于avg
列的数据并更改year
为因子。
library(dplyr)
library(ggplot2)
df %>%
arrange(desc(avg)) %>%
mutate(year = factor(year, unique(year))) %>%
ggplot() + aes(year, avg) + geom_col(aes(fill = 'red')) + guides(fill=FALSE)
或者 :
df %>%
arrange(desc(avg)) %>%
mutate(year = factor(year, unique(year))) %>%
ggplot() + aes(year, avg, fill = avg) + geom_col()
推荐阅读
- f# - 有没有办法在 F# 中混合一个类和一个有区别的联合?
- r - 在R中将数据框导出为csv格式的问题
- python - wtforms sqlalchemy 选择字段生成字符串而不是布尔值
- javascript - 如何从通过行内的按钮动态生成的表中复制一行?
- r - ggplot Integer Breaks on Facets
- python - 如何使 datetime.now() 返回时区感知日期对象?
- angular - 即使使用路由器插座也不会加载角度组件
- reactjs - 使用 setState 方法设置对象的状态值
- node.js - 使用域范围委派和服务帐户的 Google OAuth
- r - SQL Server R sript 的结果集中的更多 VARBINARY 列