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

如何在ggplot中自定义Y轴刻度为车型名称?

解决Y轴刻度替换为车型名称的方案

核心思路

要将Y轴的数值刻度替换为车型名称,需先建立year1的排名与车型的对应关系(匹配你希望左侧year1对应车型的需求),再将该映射关系应用到Y轴刻度标签上。

修改后的完整代码

# 加载所需包
library(dplyr)
library(tidyr)
library(ggplot2)
library(COINr)
library(tibble)

# 数据处理(保留原逻辑)
df=  mtcars %>%
    select(mpg,disp,wt,qsec) %>%
    rownames_to_column("car") %>%
    slice_head(n = 10) %>% 
    remove_rownames() %>% rename(car=1, 'year1'=2, 'year2'=3, 'year3'=4, 'year4'=5) %>% 
    COINr::rank_df() %>% 
     pivot_longer(cols = -car, names_to = "year", values_to = "rank") %>% arrange(car, year)

# 获取year1的排名-车型映射(按rank升序,对应Y轴从上到下的顺序)
year1_rank_car <- df %>%
  filter(year == "year1") %>%
  arrange(rank) %>%
  pull(car)

# 定义颜色向量(保留原设置)
my_colors <- c("#1b9e77", "#d95f02", "#7570b3", "#e7298a", "#66a61e",
               "#e6ab02", "#a6761d", "#666666", "#e78ac3", "#984ea3")

# 绘图(关键修改Y轴刻度标签)
ggplot(df, aes(x = year, y = rank, group = car, color = car)) +
    geom_line(size = 2) +
    geom_point(size = 6) +
    geom_text(aes(label = rank), vjust = 0.6, size = 3.5, color = 'white') + 
    labs(x='年份', y='')+
    scale_color_manual(values = my_colors) +
    scale_y_reverse(breaks = 1:length(year1_rank_car), labels = year1_rank_car) +  
    theme(
        legend.title = element_blank(), 
        legend.position = 'bottom',
        axis.text.y = element_text(hjust = 1) # 可选:调整Y轴标签对齐,避免长名称截断
    )

效果说明

  • Y轴刻度直接对应year1的排名车型:最上方是year1排名第1的车型,向下依次对应排名靠后的车型
  • 左侧year1的点精准对齐对应车型的Y轴位置,右侧year4的点展示该车型在year4的排名变化,可直观对比两年的排名差异
  • 若车型名称过长,可在axis.text.y中添加angle = 45参数调整标签角度,避免重叠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 10:15:24