3

我想用 x = 日期和 y = 风速绘制三个不同地点的风速。

我想要的情节基本上应该是这样的:

在此处输入图像描述 除了我想要完整的日期而不是 x 轴上的日期。上图只是一种解决方法,因为我想使用的代码会产生如下所述的故障。

数据:

> u10
          date u10.TXL u10.MF u10.THF
1   2013-05-01     2.9    2.0     3.5
2   2013-05-02     3.1    2.1     4.1
3   2013-05-03     2.8    2.0     3.4

我想使用的代码:

plot(u10$date[month==5&year==2013],u10$u10.MF[month==5&year==2013],
     type="b", col="green",
     main="wind speed at three sites", ylab="wind speed [m/s]", xlab="date",
     xlim=c(1,30), ylim=c(0,12),
     las=0)

lines(u10$date[month==5&year==2013],u10$u10.THF[month==5&year==2013], col="red")
lines(u10$date[month==5&year==2013],u10$u10.TXL[month==5&year==2013], col="blue")

points(u10$date[month==5&year==2013],u10$u10.THF[month==5&year==2013], col="red")
points(u10$date[month==5&year==2013],u10$u10.TXL[month==5&year==2013], col="blue")

结果如下图:

在此处输入图像描述

如您所见,尽管我使用了第一个“原始”数据,但并未使用标准点和线绘制

type="b"

我什至尝试使用“pch”命令,它只会在我自动得到的“减号”符号上添加符号。

问:为什么我有这种情节,为什么不能改?是因为日期被定义为日期,而 R 只是假设一天中每个时间的风值?但为什么它适用于二三线呢?

解决方法似乎有效,但我只是想知道我做错了什么。此外,我没有找到如何使用变通解决方案添加完整日期。

提前感谢您的帮助

PS:这是我用于解决方法的代码:

plot(u10$date[month==5&year==2013],NULL,
     type="p", pch="",
     main="wind speed at three sites", ylab="wind speed [m/s]", xlab="date",
     xlim=c(1,30), ylim=c(0,12),
     las=0)

lines(u10$date[month==5&year==2013],u10$u10.MF[month==5&year==2013], col="green")
lines(u10$date[month==5&year==2013],u10$u10.THF[month==5&year==2013], col="red")
lines(u10$date[month==5&year==2013],u10$u10.TXL[month==5&year==2013], col="blue")

points(u10$date[month==5&year==2013],u10$u10.MF[month==5&year==2013], col="green")
points(u10$date[month==5&year==2013],u10$u10.THF[month==5&year==2013], col="red")
points(u10$date[month==5&year==2013],u10$u10.TXL[month==5&year==2013], col="blue")
4

2 回答 2

1

我用最少的数据样本尝试了你的代码。当我将日期作为简单字符串提供时,我也会得到水平条或减号。如果将它们添加到 data.frame,这些字符串将转换为因子格式 ( str(u10$date)),如果您尝试绘制这些因子 ( ?plot.factor):

此函数为通用绘图函数的因子参数实现散点图方法。如果 y 缺失,则生成条形图。对于数字,使用箱线图,对于因子,显示脊线图。对于任何其他类型的 y,调用下一个绘图方法,通常是 plot.default。

因此,在您的情况下,R 尝试绘制箱线图(x 上的因子,y 轴上的数字)。缺点实际上是压扁的箱线图。

您可以通过提供以下Date格式的日期来解决此问题:

# Generate data
date = c(as.Date(c('2013-05-01', '2013-05-02', '2013-05-03')))
str(date) # 'Date'
u10.TXL = c(2.9,3.1,2.8)
u10.MF = c(2.0,2.1,2.0)
u10.THF = c(3.5,4.1,3.4)
u10 = data.frame(date, u10.TXL, u10.MF, u10.THF)

# Plot the lot:
plot(u10$date,u10$u10.MF,
     type="b", col="green",
     main="wind speed at three sites", ylab="wind speed [m/s]", xlab="date",
     ylim=c(0,12),
     las=0)

lines(u10$date,u10$u10.THF, col="red", type='b')
lines(u10$date,u10$u10.TXL, col="blue", type='b')

顺便说一句,你可以做'b'类型的线来同时添加点和线。

于 2014-05-16T21:49:04.490 回答
0

当在 x 轴上绘制的变量的类是“有序因子”时,我遇到了同样的问题。尝试将“日期”重新编码为“数字”变量,您可能会得到所需的绘图格式。

于 2014-12-03T04:07:19.870 回答