Saya memiliki data berikut tentang pendaftaran sekolah selama dua tahun. Saya ingin menyoroti data dari sekolah H di plot saya dan di legenda dengan memberikan alfa yang berbeda.

library(tidyverse)

schools <- c("A","B","C","D","E",
             "F","G","H","I","J")
yr2010 <- c(601,809,604,601,485,485,798,662,408,451)
yr2019 <- c(971,1056,1144,933,732,833,975,617,598,822)

data <- data.frame(schools,yr2010,yr2019)

Saya melakukan beberapa manajemen data untuk menyiapkan data untuk diplot.

data2 <- data %>%
  gather(key = "year", value = "students", 2:3)

data2a <- data2 %>%
  filter(schools != "H")

data2b <- data2 %>%
  filter(schools == "H")

Kemudian saya mencoba membuat grafik data menggunakan dua plot geom_line terpisah, satu untuk sekolah H dengan alpha default dan size=1.5, dan satu untuk sisa sekolah dengan alpha=.3 dan size=1.

ggplot(data2, aes(x=year,y=students,color=schools,group=schools)) +
  theme_classic() +
  geom_line(data = data2a, alpha=.3, size=1) +
  scale_color_manual(values=c("red","orange","green","skyblue","aquamarine","purple",
                              "pink","brown","black")) +
  geom_line(data = data2b, color="blue", size=1.5)

First graph attempt

Namun, sekolah yang ingin saya soroti tidak termasuk dalam legenda. Jadi saya mencoba memasukkan warna sekolah H dalam scale_color_manual alih-alih dalam panggilan geom_line.

ggplot(data2, aes(x=year,y=students,color=schools,group=schools)) +
  theme_classic() +
  geom_line(data = data2a, alpha=.3, size=1) +
  scale_color_manual(values=c("red","orange","green","skyblue","aquamarine","purple",
                              "pink","blue","brown","black")) +
  geom_line(data = data2b, size=1.5)

Second graph attempt

Namun, sekarang alfa dalam legenda semuanya sama, yang tidak menonjolkan sekolah H sebanyak yang saya inginkan.

Bagaimana saya bisa memanggil plot sehingga legenda cocok dengan alfa dari garis itu sendiri untuk semua sekolah?

0
Candle 11 Mei 2021, 17:42

1 menjawab

Jawaban Terbaik

Anda perlu menempatkan kategori alfa dan ukuran di aes seperti Anda memberi warna. Kemudian, Anda dapat menggunakan scale_alpha_manual dan scale_size_manual sesuai dengan kebutuhan Anda. Juga, dengan itu tidak perlu membuat data2a dan data2b.

Lihat kode di bawah ini:

ggplot(data2, aes(x=year,y=students,color=schools,group=schools,
alpha=schools, size = schools)) +
  theme_classic() +
  geom_line() +
  scale_color_manual(values=c("red","orange","green","skyblue","aquamarine","purple",
                              "pink","blue","brown","black")) +
  scale_alpha_manual(values = c(0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3,NA, 0.3, 0.3)) + 
  #for the default alpha, you can write 1 or NA
  scale_size_manual(values= c(1,1,1,1,1,1,1,1.5,1,1))

Kode membawa plot ini. Silakan klik.

Saya harap ini akan berguna.

1
Tuana Damla Unal 12 Mei 2021, 13:47