Каков эквивалент морского оттенка в ggplot? - PullRequest
0 голосов
/ 15 октября 2018

Я начинаю программировать на R и застреваю в этом сюжете.Вот сюжет, который я собираюсь сделать:

enter image description here

Я могу сделать это с помощью этого кода:

x <- seq(0, 10,1 )
y = x**2
z= x**3
plot(x, y, type="o", col="blue",xlab='x',ylab="y = x2")
lines(x,z,col="green")

Мне нужно сделать это с помощью ggplot, так как я должен добавить дальнейшее форматирование, но я не нахожу способ сделать это, я ищу эквивалент функции "hue" в seaborn.

sns.catplot(x="sex", y="survived", hue="class", kind="point", data=titanic);

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Чтобы использовать ggplot2, лучше подготовить фрейм данных со всеми значениями.Кроме того, рекомендуется работать с «длинноформатным» фреймом данных.Затем мы можем сопоставить цвет с class, который в вашем примере равен y и z.

x <- seq(0, 10,1 )
y <- x**2
z <- x**3

# Load the tidyverse package, which contains ggplot2 and tidyr
library(tidyverse)

# Create example data frame
dat <- data.frame(x, y, z)

# Conver to long format
dat2 <- dat %>% gather(class, value, -x)

# Plot the data
ggplot(dat2, 
       # Map x to x, y to value, and color to class
       aes(x = x, y = value, color = class)) + 
  # Add point and line
  geom_point() +
  geom_line() +
  # Map the color as y is blue and z is green
  scale_color_manual(values = c("y" = "blue", "z" = "green")) +
  # Adjust the format to mimic the base R plot
  theme_classic() +
  theme(panel.grid = element_blank())

enter image description here

0 голосов
/ 15 октября 2018

Одним из способов было бы создание двух фреймов данных отдельно

library(ggplot2)

df1 <- data.frame(x, y)
df2 <- data.frame(x, z)

ggplot(df1, aes(x, y)) + 
       geom_line(color = "blue") + 
       geom_point(color = "blue", shape = 1, size = 2) + 
       geom_line(data = df2, aes(x, z), color = "green") +
       ylab("y = x2")

enter image description here

...