R为线图指定x轴刻度

Posted

技术标签:

【中文标题】R为线图指定x轴刻度【英文标题】:R specifying x-axis ticks for a line plot 【发布时间】:2014-08-16 08:42:57 【问题描述】:

我有一些时间序列,其中有 200 个值与一个区间内的 200 个不同时间相关联。绘制线图后,我想手动告诉 R 只显示我指定的某些特定值的 x 轴刻度。然后,我想指定一个不同的名称,即日期字符串,以在这些刻度处绘制而不是数值。我看过axis(),但我无法将整个过程放在一起。我希望绘制整个折线图,而不仅仅是我指定的 x 标签。

例如: 如果我有: y = c(227, 342, 121, 275, 354, 999, 221, 475, 867, 347, 541) x = c(1, 5, 10, 15, 20, 25, 30 ,35, 40, 45, 50)

我想要 plot(x, y, "l") 但 x 轴刻度仅在 c(10, 30, 40) 处。对于这些刻度,我想分别关联 c("March", "June", "August") 并将这些名称作为这三个刻度的标签。

【问题讨论】:

【参考方案1】:

您将需要使用手动轴创建。这可以通过 (1) 禁用自动轴创建(在对 plot 的调用中使用 xaxt='n')和 (2) 对 axis 函数进行自定义调用。

以下是我将如何进行:

y = c(227, 342, 121, 275, 354, 999, 221, 475, 867, 347, 541)
x = c(1, 5, 10, 15, 20, 25, 30 ,35, 40, 45, 50)
plot(x, y, "l", xaxt='n')
axis(1,at=c(10,30,40),labels=c("March", "June", "August"))

导致以下情节:

【讨论】:

这很完美,正是我想要的。只是一个后续,他们无论如何都要垂直旋转标签吗?日期有点长。谢谢 yop,你可以在axis的调用中使用las=2选项。 还有一种方法可以按自定义角度旋转标签,例如。 45度? @Wassermann 在这种情况下,您必须使用text,因为只有此函数可以使用srt 参数来旋转文本。对于完整示例,将最后一行替换为:text(x=c(10,30,40), y=rep(par('usr')[3],3), labels=c("March", "June", "August"), srt=45,xpd=T, pos=1, offset=1) 对上面的解释:srt=45意思是“将文本旋转45度”——y=rep(par('usr')[3],3)将绘图的最底部坐标复制了三次,以知道标签的位置——@ 987654333@ 表示我们可以在图形框之外,在轴部分上写——pos=1 表示我们将文本定位在低于所选坐标,offset=1 表示我们将文本向底部偏移一个字符(因为文本倾斜了 45 度,我们需要在顶部释放一些空间)

以上是关于R为线图指定x轴刻度的主要内容,如果未能解决你的问题,请参考以下文章

使用 Seaborn 和 Matplotlib 在热图和线图的共享子图中对齐 x 轴刻度

echarts,折线图,我想设置X轴每个刻度的固定宽度该怎么设定呢

使用多个连接的箱线图更改 Matplotlib 中的轴刻度

如何在 Chart.js v2 中格式化 x 轴时间刻度值

R语言ggplot2可视化时间序列散点图X轴和Y轴都是时间信息使用labels参数在scale_y_datetime函数中自定义指定Y轴时间信息轴标签刻度显示的格式

echarts 折线图x,y轴的刻度字体颜色怎么改??