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

ggplot2绘图优化:设置轴范围并修改物种标签格式

解决方案

可以实现你的需求,以下是修改后的完整代码及说明:

修改步骤说明

  • 调整柱形颜色与轴范围:根据Delta值是否大于1设置不同填充色,并将翻转后的X轴(原Y轴)范围固定为0-2,同时添加1作为收缩/扩张的阈值线。
  • 处理物种标签:替换物种名中的下划线为空格,并设置为斜体格式。

完整代码

# 加载所需库
library(ggplot2)
library(stringr)

# 数据预处理
resu_fac_final <- structure(list(species = c("Artibeus_cinereus", "Artibeus_concolor", 
"Artibeus_gnomus", "Artibeus_jamaicensis", "Artibeus_lituratus", 
"Artibeus_phaeotis", "Artibeus_planirostris", "Artibeus_toltecus", 
"Artibeus_watsoni", "Carollia_brevicaudum"), iniDist2 = c(98095, 
69677, 43781, 140175, 157200, 52678, 118224, 15658, 13574, 113735
), iniDist = c(111511, 71610, 61954, 129815, 132053, 50888, 127966, 
22795, 15096, 119665), Delta = c(0.87968899929155, 0.973006563329144, 
0.70666946444136, 1.07980587759504, 1.19043111477967, 1.03517528690457, 
0.923870403075817, 0.686905023031367, 0.899178590355061, 0.950444992270087
)), row.names = c(NA, 10L), class = "data.frame")

# 替换物种名中的下划线为空格
resu_fac_final$species <- str_replace_all(resu_fac_final$species, "_", " ")

# 绘制图表
ggplot(resu_fac_final, aes(x = reorder(species, Delta), y = Delta)) +
  geom_bar(stat = "identity",
           show.legend = TRUE,
           aes(fill = ifelse(Delta < 1, "收缩", "扩张")),
           color = "white") +
  # 添加阈值线(Delta=1)
  geom_hline(yintercept = 1, color = "black", lwd = 0.5) +
  # 调整文本位置:收缩类文本在柱形左侧,扩张类在右侧
  geom_text(aes(label = round(Delta, 2),
                hjust = ifelse(Delta < 1, 1.1, -0.1),
                vjust = 0.5), size = 2.5) +
  # 设置Y轴范围(翻转后为X轴)0-2
  scale_y_continuous(limits = c(0, 2), expand = c(0, 0)) +
  # 设置自定义颜色
  scale_fill_manual(values = c("收缩" = "#ff9999", "扩张" = "#6699ff")) +
  xlab("物种") +
  ylab("气候生态位扩张/收缩(Delta)") +
  coord_flip() +
  theme_minimal() +
  # 设置物种标签为斜体
  theme(axis.text.y = element_text(face = "italic"),
        legend.title = element_blank())

关键修改点

  1. 颜色映射:通过ifelse(Delta <1, "收缩", "扩张")动态设置填充色,并使用scale_fill_manual指定粉色(收缩)和蓝色(扩张)。
  2. 轴范围控制:scale_y_continuous(limits = c(0,2))将原Y轴(翻转后X轴)限制在0-2区间。
  3. 物种标签处理:str_replace_all替换下划线为空格,theme(axis.text.y = element_text(face = "italic"))设置斜体。
  4. 文本位置优化:根据Delta值调整hjust,确保数值文本显示在柱形外侧,提升可读性。

内容的提问来源于stack exchange,提问作者Gabriel de Mello

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:34:52