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

如何在ggplot2条形图中按指定顺序排列条形?

调整ggplot2分面条形图的条形顺序

你当前的ggplot2分面条形图中,条形默认按字符顺序排列,需要将其调整为MD_5NM_WATER、MD_10NM_WATER、MD_15NM_WATER、benchMEM的顺序,可通过以下方式实现:

核心思路

将specie列转换为**因子(factor)**并指定自定义的水平顺序,同时同步调整填充颜色的对应关系,确保每个类别颜色匹配。

修改后的完整代码

# 读取数据
data <- read.csv("test2.csv", stringsAsFactors=FALSE, header=TRUE)

# 自定义specie的目标顺序,转换为因子(注意字符串需与数据中完全一致)
target_order <- c(
  "gmx mdrun  -s MD_5NM_WATER.tpr -nsteps 10000 ",
  "gmx mdrun  -s MD_10NM_WATER.tpr -nsteps 10000 ",
  "gmx mdrun -s MD_15NM_WATER.tpr -nsteps 10000 ",
  "gmx mdrun -s benchMEM.tpr -nsteps 10000"
)
data$specie <- factor(data$specie, levels = target_order)

# 绘制分面条形图
facet_plot <- ggplot(data, aes(x = specie, y = value, fill = specie)) +
  geom_bar(stat = "identity", position = "dodge") +
  # 颜色顺序与target_order一一对应
  scale_fill_manual(
    values=c("#fc8d59", "#fee08b", "#d53e4f", "#3288bd"),
    labels = c("MD_5NM_WATER", "MD_10NM_WATER", "MD_15NM_WATER", "benchMEM") # 可选:简化图例标签
  ) +
  ylab("Performance (ns/day) on Tesla P100")+ 
  facet_grid(. ~ condition, switch="both") +
  theme(
    plot.title = element_text(hjust = 0.5), 
    axis.title.y = element_text(face="bold", colour="black", size = 12),
    legend.title = element_text(face="bold", size = 10),  
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    axis.ticks.x=element_blank(),
    axis.title.x = element_blank(), 
    axis.text.x=element_blank(),
    strip.background = element_rect(fill="grey", colour="black", size=1),
    strip.text = element_text(face="bold", size=rel(1.2))
  )

# 调用绘图并调整图例、y轴范围
facet_plot + 
  guides(fill=guide_legend(title="GROMACS command")) + 
  scale_y_continuous(expand = c(0,0), limits = c(0,460))

关键说明

  • 因子的levels必须与数据中specie的字符串完全匹配(包括空格),否则会出现类别缺失或排序错误
  • scale_fill_manual的颜色顺序需和target_order对应,保证每个类别的颜色不变
  • 若觉得图例标签过长,可通过labels参数简化显示内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:10:13