我究竟做错了什么?重新标记 x 轴刻度线

What am I doing wrong? Relabeling x axis tick marks

这是我关于 Whosebug 的第一个问题。我是一个长期的潜伏者,希望这篇文章写得通俗易懂。所以,我已经在这里浏览了答案并将这些建议合并到我的代码中,但显然我遗漏或做错了什么。

问题: 我正在尝试将当前显示 0:60 的 x 轴替换为 10 (10,20,30...),即使 x是从 1946:2012 开始以年为单位输入的,而不是年。每次我 运行 代码 axis() 都没有对代码进行任何更改。我试过在 plot 参数中设置 axes = FALSE,虽然这消除了轴,但 axis() 仍然不执行任何操作。我还打算以类似的方式更改 Y 轴(从小数转换为百分比)。我考虑过简单地使用创建新向量并将它们输入为我的 X 和 Y,但我宁愿不对数据库进行任何更改。

密钥

unvoting$PctAgreeUS 是一个十进制数值,表示在给定年份的联合国大会上与美国达成协议,

unvoting$Year 是一个整数,它为每个观察值分配一个年份。

代码

plot(tapply(unvoting$PctAgreeUS,unvoting$Year,mean),
     xlab="Year", axes = TRUE,
     ylab="Percent Agree", ylim = c(0,.8),
     main = "Agreement with the United States",
     type="l")
#the x axis
axisyears<-c(unique(unvoting$Year))
axis(1,at = seq(round(min(axisyears)),
                round(max(axisyears)),by=1),
     labels = 1946:2012)
#the y axis
axisagrmt <-c(unvoting$PctAgreeUS)
axis(2, at = seq(0,8,), by=1,
     labels = c("0",".1",".2",".3",".4",".5",".6",".7",".8"))

谢谢

您需要将 at 值设置为标签在 当前 轴刻度上的位置(即 x 轴上的 1:67)

plot(tapply(unvoting$PctAgreeUS, unvoting$Year, mean),
     xlab = "Year", 
     axes = FALSE,
     ylab = "Percent Agree", 
     ylim = c(0,.8),
     main = "Agreement with the United States",
     type = "l")

axis(1, at = 1:67, labels = 1946:2012)
axis(2, at = seq(0, 0.8, 0.1))


编数据

unvoting <- data.frame(PctAgreeUS = runif(67 * 4, 0, 1),
                       Year = rep(1946:2012, each = 4),
                       country = rep(LETTERS[1:4], each = 67))