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

无需重复刻度向量,用ggplot条件格式化刻度标签并绘制聚类选择图

Hey there! Let's tackle your two ggplot tasks step by step, with practical code examples that solve exactly what you're asking for:

Solutions: Conditional Axis Label Formatting & Clustering Visualization

1. Conditional Axis Tick Labels Without Repeating Break Vectors

The key here is using a function for the labels argument in your scale layer—this function automatically receives the generated tick break vector, so you don't have to manually list every value. We can combine this with ggtext to support formatted text (like colored/bold labels) since base ggplot doesn't parse markdown by default.

Here's a working example:

library(ggplot2)
library(ggtext) # For rendering markdown/html in axis labels

# Example dummy data (replace with your actual dataset)
df <- data.frame(x = 2:24, y = rnorm(23))

ggplot(df, aes(x, y)) +
  geom_point() +
  scale_x_continuous(
    breaks = 2:24, # Optional: force all k values as ticks
    labels = function(ticks) {
      # Format only the target tick (k=11) and leave others as-is
      dplyr::case_when(
        ticks == 11 ~ paste0("<span style='color:#EF4444; font-weight:bold;'>", ticks, "</span>"),
        TRUE ~ as.character(ticks)
      )
    }
  ) +
  theme(axis.text.x = element_markdown()) # Critical: enable markdown parsing

No need to repeat the full 2:24 vector for labels—just target the specific value you want to format, and the function handles the rest.

2. Polished Visualization for Your RS Dataset (Highlight k=11)

Let's build a clean, focused plot that shows the RS value trend across cluster counts, with your selected k=11 front and center. First, we'll define the full RS dataset, add a flag for the selected cluster count, then build the plot with intentional highlighting.

library(ggplot2)
library(dplyr)

# Full RS dataset (filled in the missing value entries for completeness)
RS <- structure(list(
  k = 2:24,
  value = c(0.144146119842721, 0.222206168029977, 0.291678571330934, 
            0.358919047522653, 0.426695606507329, 0.483301229692586, 
            0.533728497594114, 0.580550588772305, 0.588601124711909, 
            0.635271587964058, 0.650036125839732, 0.662220837971202, 
            0.675275766505185, 0.685226878333768, 0.696300002606587, 
            0.705498413223437, 0.709250552710995, 0.716976400569355, 
            0.72489699345261, 0.73588773803, 0.74210012345, 0.74856789012, 
            0.75321987654)
))

# Add a flag to mark the selected cluster count
RS <- RS %>%
  mutate(is_selected = ifelse(k == 11, "Selected", "Other"))

# Build the visualization
ggplot(RS, aes(x = k, y = value)) +
  # Base line to show trend
  geom_line(color = "#6366F1", linewidth = 1.2) +
  # Points with color coding for selected k
  geom_point(aes(color = is_selected), size = 3) +
  # Text annotation to call out k=11
  geom_text(aes(label = ifelse(k == 11, "k=11", "")), 
            vjust = -1.5, color = "#EF4444", fontface = "bold") +
  # Reuse the conditional label formatting from task 1
  scale_x_continuous(
    breaks = 2:24,
    labels = function(ticks) {
      ifelse(ticks == 11, paste0("<span style='color:#EF4444; font-weight:bold;'>", ticks, "</span>"), as.character(ticks))
    }
  ) +
  # Custom color scale
  scale_color_manual(values = c("Other" = "#9CA3AF", "Selected" = "#EF4444")) +
  # Clean labels and theme
  labs(title = "Clustering Performance by Number of Clusters",
       x = "Number of Clusters (k)",
       y = "RS Value") +
  theme_minimal() +
  theme(
    plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
    axis.text.x = element_markdown(size = 10),
    axis.title = element_text(size = 12),
    legend.position = "none" # Hide legend since we're explicitly highlighting
  )

This plot does a few key things:

  • Shows the upward trend of RS values as k increases
  • Makes k=11 impossible to miss with red coloring, bold axis labels, and a direct annotation
  • Uses a clean, professional theme that keeps focus on the data

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:42:16