如何在ggplot2中为离散变量创建渐变颜色?

时间:2015-05-20 14:19:25

标签: r 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")

这会产生漂亮的彩虹(下面)enter image description here

但我宁愿有从蓝色到红色的渐变色。我有什么想法可以做到吗?

2 个答案:

答案 0 :(得分:16)

ggplot的默认渐变函数需要连续缩放。最简单的解决方法是转换为像@Roland建议的连续性。您还可以使用this.$el.html(this.template({ skills: this.skills })); 指定所需的任何颜色比例。您可以获取ggplot与

一起使用的颜色列表
<!-- params.loads is coming in as a function -->
<metric params="value: loads()"></metric>

<!-- params.loads is coming in as a value -->
<div data-bind="component: {
        name: 'metric',
        params: {
                value: loads()                   
        }
    }"></div>

这将返回100种颜色,从蓝色变为红色。然后,您可以使用

在情节中使用它们
scale_color_manual

enter image description here

答案 1 :(得分:10)

由于离散图例无论如何都是无用的,您可以使用连续色标:

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")

resulting plot