gpt4 book ai didi

r - 月-年条形图按年份进行分面和填充;数据输入为字符格式的日期

转载 作者:行者123 更新时间:2023-12-02 17:34:56 26 4
gpt4 key购买 nike

环境:Win 7 HP、R v2.15.1

我想要达到的目标:

  • 使用
  • 绘制 y(数字)与 x(日期)的关系图
  • 标签月年缩写,按月+年排序,las2 垂直对齐
  • 按年份填充颜色
  • 按年份划分的面网格

在阅读了这个论坛中的不同主题后,我尝试了不同的方法,但无法得到我需要的东西。需要帮忙。附上示例数据和结果。

我的样本数据

x <- c("04-01-10","05-01-10","06-01-10","07-01-10","08-01-10","09-01-10","10-01-10","11-01-10","12-01-10","01-01-11","02-01-11","03-01-11","04-01-11","05-01-11","06-01-11","07-01-11","08-01-11","09-01-11","10-01-11","11-01-11","12-01-11","01-01-12","02-01-12","03-01-12","04-01-12","05-01-12","06-01-12")
y <- c(120,210,130,160,190,210,80,70,110,120,140,160,130,200,110,180,210,200,90,60,100,100,120,170,100,180,120)

x 是日期(字符),格式为 mm-dd-yy tz:IST(加尔各答/亚洲)数据每月只有一个 y 值,该值位于该月的开始日期

转换为数据框

MySample <- data.frame(x) ## convert to dataframe 
MySample$y <- y

加载所需的库

require(lubridate) 
require(ggplot2)

MySample 基本图

1) 绘制 x 与 y 的关系图

    ggplot(MySample, aes(MySample$x, MySample$y)) + 
geom_bar(y=MySample$y,stat="identity")

给了我基本图结果

2) 绘制 x 与 y + fill=year

    ggplot(MySample, aes(MySample$x, MySample$y, fill=year(MySample$x))) + 
geom_bar(y=MySample$y,stat="identity")

给了我填充,但有 5 个填充年,2010,2010.5,2011,2011.5,2012

我尝试了不同的方法,但遇到了一个或另一个错误。

3) 绘制 x 与 y + fill=year + facet_grid(year)

    ggplot(MySample, aes(x, y, fill=year(x))) + 
geom_bar(y=MySample$y,stat="identity") +
facet_grid(. ~ year(MySample$x))

获取:layout_base(data, cols, drop = drop) 中出现错误: 至少一层必须包含用于分面的所有变量

4) 绘制 x 与 y + fill=year + facet_grid(year) + labels-month (abbr)

    ggplot(MySample, aes(x, y, fill=year(x))) + 
geom_bar(y=MySample$y,stat="identity") +
scale_x_date(labels=month(MySample$x,label=TRUE,abbr=TRUE))

获取:scale_labels.连续(scale,major)中的错误:中断和标签的长度不同

我陷入困境,需要帮助才能前进。需要解决方案来满足以下要求:

  1. 仅限 3 个填充年份 - 2010、2011、2012
  2. xlabels - %b%y 格式;按月年顺序排序; las2 定位(垂直)
  3. facet_grid 按年份,仅在相应的facet-grid 中显示当年的 xlabel 和条形

最佳答案

回答你的三点:

  1. 使用scale_fill_gradient(breaks=unique(MySample$year))
  2. 使用标准内置日期系统而不是 lubridate。您可以使用 date_format 在 ggplot2 中指定格式。
  3. 使用:+facet_grid(.~年份,scales = "free")

下面的代码可以做到这一点:

MySample$date <- as.Date(MySample$x, "%m-%d-%y")
MySample$year <- year(MySample$date)

ggplot(MySample, aes(date, y, fill = year)) +
geom_bar(y=y,stat="identity") +
facet_grid(. ~ year, scales = "free") +
scale_x_date(labels = date_format("%b/%y")) +
scale_fill_gradient(breaks=unique(MySample$year))

关于r - 月-年条形图按年份进行分面和填充;数据输入为字符格式的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11472856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com