代码之家  ›  专栏  ›  技术社区  ›  Olli

如何将x轴标签从字符更改为其他字符?

  •  0
  • Olli  · 技术社区  · 6 年前

    我有一个关于xaxis标签的问题。 与此处讨论的内容相比:

    How to specify the actual x axis values to plot as x axis ticks in R

    我绘制了一个包含10列的数据框。每个都用方框图表示。 对于x轴,我的标签是管道1到管道10。现在我想用这种方式将这些标签更改为特定的ID

    windows()
    par(mfrow= c(2,1),las=3)
    boxplot(output.valid.fast,outline=F, xlab ="Pipes",ylab="RMSE(-)")
    axis(1,at=c("Pipe1","Pipe2","Pipe3","Pipe4","Pipe5","Pipe6","Pipe7","Pipe8","Pipe9","Pipe10"),labels=c("1234","2345","3456","4567","5678","6789","78910","891011","9101112","10111213"))
    

    每次这样做时,我都会收到一个错误,显示以下内容:

    In axis(1, at = c("Pipe1", "Pipe2", "Pipe3", "Pipe4", "Pipe5", "Pipe6",  :
      NAs introduced by coercion
    

    我在这里做错了什么?我非常感谢您的提示或建议。 干杯 奥利

    2 回复  |  直到 6 年前
        1
  •  2
  •   DJack    6 年前

    代替 at = c("Pipe1", ... , "Pipe10") 通过 at = 1:10

    具有2列的示例

    boxplot(data.frame(Pipe1 = 1:10, Pipe2 = 2:11), xaxt = "n")
    axis(1, at = 1:2, labels = c("1234","2345"))
    

    enter image description here

        2
  •  0
  •   rg255    6 年前

    为了在Djacks答案的基础上解释发生了什么,R在数字比例上绘制一个轴,然后应用标签 管道1 等等,默认情况下。首先需要使用以下命令抑制默认文本标签 xaxt = "n" 在boxplot函数中(请注意,此时它仍在使用未标记的x轴生成绘图),然后告诉它使用 labels at 分别在 axis 功能,带 at = 1:10

    为了进一步说明这一点,即轴使用的是数字坐标系,您可以使用 text("abc", x = 3, y = 0)