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轴每个刻度的固定宽度该怎么设定呢
R语言ggplot2可视化时间序列散点图X轴和Y轴都是时间信息使用labels参数在scale_y_datetime函数中自定义指定Y轴时间信息轴标签刻度显示的格式