我在一段时间内有一些风速和风向数据,我需要将它绘制成羽毛图。
在浏览网页一段时间后,我找到了一个人写的函数来绘制适合我的羽毛情节(谢谢你,如果你正在读这个!!)。我现在的问题是我不知道如何操纵x轴的标记。
绘图后,图形如下: 现在x轴在这里看起来不太糟糕,但想象我有200个数据点(因而是滴答)而不是10,并且轴刻度可能会有点混乱。所以我希望有人可以帮助我操纵x轴,特别是弄乱蜱虫。
绘制图形的代码是:
stg <- scan(what="", sep="\n")
9/20/15_12:00 2.597058824 157.9411765
9/21/15_0:00 2.177192982 185.1754386
9/21/15_12:00 2.577391304 189.2173913
9/22/15_0:00 1.984955752 237.4336283
9/22/15_12:00 3.993859649 252.6315789
9/23/15_0:00 1.613392857 175.5357143
9/23/15_12:00 3.849166667 216.8333333
9/24/15_0:00 2.138135593 117.0338983
9/24/15_12:00 3.32605042 216.302521
9/25/15_0:00 1.490178571 239.8214286
df <- read.table(textConnection(stg), sep="")
colnames(df) <- c("Time", "wsp", "wdir")
df$PTime <- as.POSIXct(df$Time, format="%m/%d/%y_%H:%M")
feather.plot2 <- function (r, theta, xpos, yref = 0, use.arrows = TRUE, col.refline = "lightgray",
fp.type = "s", main = "", xlab = "", ylab = "", xlabels = NULL,
...)
{
if (missing(xpos))
xpos <- 1:length(theta)
if (fp.type == "m")
theta <- 5 * pi/2 - theta
x <- r * cos(theta)
y <- r * sin(theta)
xmult <- diff(range(xpos))/(diff(range(y)) * 2)
x <- x * xmult
xlim <- range(c(xpos, x + xpos))
ylim <- range(c(y, yref))
oldpin <- par("pin")
xdiff <- xlim[2] - xlim[1]
ydiff <- ylim[2] - ylim[1]
plot(0, xlim = xlim, ylim = ylim, type = "n", main = main,
xlab = xlab, ylab = ylab, axes = TRUE, xaxt = "n")
box()
if (is.null(xlabels))
axis(1)
else axis(1, at = xpos, labels = xlabels)
abline(h = yref, col = col.refline)
if (use.arrows)
arrows(xpos, yref, xpos + x, y, length = 0.1, ...)
else segments(xpos, yref, xpos + x, y, ...)
par(pin = oldpin)
}
feather.plot2(df$wsp, df$wdir, fp.type="m", xlabels=df$PTime)
虽然我不知道为什么这个数字的标签出现为&#34; Sun - Thu&#34;而不是约会......
这个数字的代码是:
daterange=c(min(df$PTime), max(df$PTime))
plot(x=df$PTime, y=df$wsp, xaxt="n", type="l")
axis.POSIXct(1, at=seq(daterange[1], daterange[2], by="day"))
axis.POSIXct(1, at=seq(daterange[1], daterange[2], by="12 hours"), tcl = -0.3, labels=FALSE )
我尝试在羽毛图上使用这些轴命令,但它没有用。所以我很感激任何帮助/建议。非常感谢你!!
答案 0 :(得分:1)
我看到两个请求:主要和次要蜱虫;以及更紧凑的轴日期时间注释。步骤1:禁止创建默认轴。第2步:通常的标记是标记主要标记,因此我们将确定标记的正确位置并为标签指定格式说明。第3步:放置次要刻度线。你已经发现了大部分问题,我认为格式问题是最容易解决的问题,所以让我们看看:
plot(x=df$PTime, y=df$wsp, xaxt="n", type="l")
axis.POSIXct(1, at=seq(daterange[1], daterange[2], by="day"), format="%m-%d %H%P",
lwd.ticks=2)
axis.POSIXct(1, at=seq(daterange[1], daterange[2], by="12 hours"),
tcl = -0.3, labels=FALSE )
似乎能够成功实现我认为的目标。 by = "day"
的使用可能导致翻译人员选择日名的三字母缩写。 (我真的不知道。)