簡體   English   中英

如何在ggplot2中為離散變量創建漸變顏色?

[英]How do you create a gradient of colors for a discrete variable in ggplot2?

我有大約100個有序類別的數據。 我想將每個類別分別繪制為一條線,線條顏色范圍從低值(比如藍色)到高值(比如紅色)。

這是一些示例數據和一個圖。

# Example data: normal CDFs

library(ggplot2)

category <- 1:100
X <- seq(0, 1, by = .1)
df <- data.frame(expand.grid(category, X))
names(df) <- c("category", "X")
df <- within(df, {
  Y <- pnorm(X, mean = category / 100)
  category <- factor(category)
  })

# Plot with ggplot
qplot(data = df, x = X, y = Y, color = category, geom = "line")

這會產生漂亮的彩虹(下圖) 在此輸入圖像描述

但我寧願從藍色到紅色漸變。 我有什么想法可以做到這一點?

ggplot的默認漸變函數需要連續縮放。 最簡單的解決方法是轉換為像@Roland建議的連續性。 您還可以使用scale_color_manual指定所需的任何顏色比例。 你可以得到ggplot可以使用的顏色列表

cc <- scales::seq_gradient_pal("blue", "red", "Lab")(seq(0,1,length.out=100))

這將返回100種顏色,從藍色到紅色。 然后你可以在你的情節中使用它們

qplot(data = df, x = X, y = Y, color = category, geom = "line") +     
    scale_colour_manual(values=cc)

在此輸入圖像描述

由於離散的圖例無論如何都是無用的,你可以使用連續的色標:

ggplot(data = df, aes(x = X, y = Y, color = as.integer(category), group = category)) +
  geom_line() +
  scale_colour_gradient(name = "category", 
                        low = "blue", high = "red")

結果情節

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM