You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的stripchart中保持x轴类别的自定义顺序?

问题描述

我想用R绘制一组实验数据的stripchart,6个样本各3个观测值,使用的代码如下:

pro<-c("Q","Q","Q",
         "E","E","E",
         "M","M","M",
         "F","F","F",
         "G","G","G",
         "P","P","P"
); as.factor(pro)

ges<-c(1000,
       1111,
       2222,
       1142,
       1111,
       1112,
       400,
       441,
       544,
       250,
       200,
       150,
       101,
       102,
       103,
       800,
       900,
       950
)

an <-data.frame(
  pro,
  rep=c(1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3),
  ges
);an; str(an)

stripchart(
  ges~pro,data=an,vert=T,
  pch=16,col="red",
  ylab="y axis", xlab="x axis",
  tck=.01,
  )

我对生成的stripchart整体满意,但R会将x轴的类别按字母排序,而我的实验需要按Q-E-M-F-G-P的顺序排列。我不想使用ggplot等额外包,希望找到一种简单的方法强制保持向量的原始顺序。

解决方案

核心是手动指定因子pro的水平顺序——R默认会按字母排序因子水平,只要在将pro转为因子时显式定义levels参数,就能控制x轴的显示顺序。

修改后的完整代码

# 手动指定因子水平顺序,替代原有的as.factor(pro)
pro<-factor(c("Q","Q","Q",
              "E","E","E",
              "M","M","M",
              "F","F","F",
              "G","G","G",
              "P","P","P"),
            levels = c("Q", "E", "M", "F", "G", "P"))

ges<-c(1000,
       1111,
       2222,
       1142,
       1111,
       1112,
       400,
       441,
       544,
       250,
       200,
       150,
       101,
       102,
       103,
       800,
       900,
       950
)

an <-data.frame(
  pro,
  rep=c(1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3,
        1,2,3),
  ges
);an; str(an)

stripchart(
  ges~pro,data=an,vert=T,
  pch=16,col="red",
  ylab="y axis", xlab="x axis",
  tck=.01,
  )

关键说明

  • 原代码中as.factor(pro)仅执行了转换操作,但未将结果重新赋值给pro,因此数据框中的pro仍为字符型,R绘图时会自动转为因子并按字母排序。
  • 通过factor()函数显式指定levels参数,可固定因子的顺序,绘图时x轴就会按照你需要的Q-E-M-F-G-P顺序显示。

内容的提问来源于stack exchange,提问作者mrax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 06:33:31