Как заполнить область под кривой цветами визуального спектра - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь создать кривую с цветами визуального спектра, заполняющими область под кривой.

Таким образом, левая сторона области под кривой синего цвета, а правая часть области под кривой красного цвета.

Это пример кода:

library(ggplot2)

set.seed(1)
x <- seq(-4, 4, length=271)
y <- dnorm(x)

df <- data.frame(x,y)

col <- rainbow(271)

ggplot(data=df) + geom_line(aes(x=x, y = y)) + 
  geom_area(aes(y = y, x = x)) + theme_minimal() + 
  scale_color_gradient(low = '#FF0000FF', high = '#FF0006FF')

Но все, что я получаю, это черная область под кривой.

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Я хотел получить спектр цветов визуального освещения.

мое решение очень похоже на приведенное выше. я использовал scale_colour_gradientn()

[![library(ggplot2)
library(RColorBrewer)
library(colorRamps)

set.seed(1)
x <- seq(-4, 4, length=271)
y <- dnorm(x)

df <- data.frame(x,y)

colfunc<-colorRampPalette(c("royalblue", "green", "springgreen", "yellow2", "yellow", "red", "red2", "red3", "red4"))

ggplot(df, aes(x=x, y=y)) +  
  geom_segment(aes(xend=x, yend=0, colour=abs(x)^0.7*sign(x)), size = 1) +
  scale_colour_gradientn(colours = colfunc(271))

enter image description here

0 голосов
/ 04 июля 2018

Как насчет этого?

df$z  <- sqrt(abs(x))*sign(x)

ggplot(df, aes(x=x, y=y)) + 
  geom_line() +
  geom_area(aes(group=z, color=z)) + 
  theme_minimal() + 
  scale_color_gradient(low = 'blue', high = 'red')

Уступая

plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...