【问题标题】:在 R 中的图表中设置列宽
【发布时间】:2022-01-21 21:27:06
【问题描述】:

我对 R 很陌生。我想用 ggplot2 按月绘制图表,但年份变量的最后日期在 x 轴上交织在一起。我附上了下面的图片。关于如何调整 x 轴宽度的任何想法?我还可以在日期变量中打印每年吗?我的日期在 2010-2020 年之间。

enter image description here

【问题讨论】:

  • 欢迎来到 SO!请参阅How do I ask a good question?How to make a great R reproducible example。通过dput(df) 的输出提供您的数据,您在图像中生成绘图的代码是什么?
  • 我觉得很好。我的数据集长 4018 行。这就是为什么我无法发送它。我刚刚添加了一张图片。这是我尝试过的代码:ggplot(data = uydu_ayrik) + geom_point(mapping = aes(x = Tarih, y = 00:00)) + facet_grid(~ay)我一直在尝试定期编写,但我无法成功:(
  • 使用 head() 我只能显示前 10 行。 TARIH 00:00 12:00 YIL AYGÜN12.4215246.198205 2010 1/30 2010-01-03 7.942957 7.942957 7.942957 7.942957 7.942957 7.942957 7.942957 7.942957 7.942957 7.942957 7.942957 7.942957 3.676295 20101 5.820-01-06 2.820-01-06 2.820-01-07 2010 1/10101010 -01-09 4.166854 2.848054 2010 1 9 10 2010-01-10 3.752170 4.310716 2010 1 10
  • 我理解你。但我无法清楚地解释自己。我附上了我的数据集的图像。因为我不明白如何在网站上分享它。 enter image description here
  • 您可以编辑您的问题,然后粘贴dput(head(df, 10)) 的结果。添加数据集的图像没有帮助,因为我们无法使用它进行编码。

标签: r ggplot2


【解决方案1】:

更新版本。 Op似乎在要求这个。时间变量显示完整日期(“年-月-日”)。使用 scale_x_date 修改 x 轴以仅显示日历年:

# example dataset
dt <- data.table(date=as.Date(seq(1,1000,100),origin = "2010-01-01"),var=rnorm(10))
head(dt)

# display only the YEAR
ggplot(dt,aes(y=var,x=date))+geom_point()+
  scale_x_date(date_breaks = "1 year", date_labels =  "%Y") 

# display 6 months intervals
ggplot(dt,aes(y=var,x=date))+geom_point()+
  scale_x_date(date_breaks = "6 months", date_labels =  "%b %Y") 

旧版本:时间变量只显示年份。

为了显示每一年的数据,这里有两个选项。

为了增加宽度,我猜你的意思是永久保存绘图。

澄清:如果您使用 R Studio,如屏幕截图所示,您可以使用 GUI 以多种方式更改绘图的临时可视化。

澄清 #2:查看?facet_wrap 以了解如何在多行和多列中显示构面,这也有助于您的绘图的具体可视化。

library(ggplot2)
library(data.table)

# create example dataset (no values for 2015)
dt <- data.table(var=rnorm(40),year=sample(c(seq(2010,2014,1),seq(2016,2020,1)),40,replace = T))

# clearly plot each specific year by considering it as factor (2015 not shown)
ggplot(dt,aes(y=var,x=as.factor(year)))+geom_point()+
  xlab("Year") # nicer x-axis naming

# clearly plot each specific year by modifying breaks (shows also empty years if present)
ggplot(dt,aes(y=var,x=year))+geom_point()+
  scale_x_continuous(breaks = seq(min(dt[,year]),max(dt[,year]),1))

# save the file with exaggerated width (just an example)
ggsave("myfilepath/myfilename.jpg",width=20,height=4,units = "cm")

【讨论】:

  • 感谢您的回答。我试过你的建议。我的数据集中已经有了 year 变量。但是不知道是不是数据集大,没解决问题。
  • 好的具体是哪个问题没有解决?
  • 我在显示复杂的年份时遇到了麻烦,我仍然有自己的年份列。这就是我不想创建新列的原因。如果我从日期变量(2010-01-01 格式)执行此操作,则 2010、2015 和 2020 年出现在 x 轴上,而其他年份则没有。即使我将其分隔为年、月、日,并且仅在我对年变量执行此操作时将其定义为整数,2010.5 与显示值。我不明白为什么会这样混在一起。
  • 请记住,我不是在创建新列!我只需要一个与您类似的示例数据集来运行可重现的示例。
  • 它适用于相隔 3 年的时间,但除非您在除以 1 年期间大幅减小大小,否则它不起作用。非常感谢您的努力。
猜你喜欢
  • 2012-11-28
  • 2019-08-08
  • 2019-12-08
  • 2021-04-16
  • 1970-01-01
  • 2012-08-17
  • 2016-08-24
  • 2018-03-28
  • 2020-06-11
相关资源
最近更新 更多