Saya cukup baru di R dan SO dan akan sangat menghargai bantuan apa pun yang Anda miliki dalam hal ini.

Saya memiliki data kelas factor dengan 17 level. Saya menggunakan library(ggplot2) dan geom_bar(position="fill") untuk membuat plot batang proporsional. Kode dan output/plot ada di bawah.

Pada dasarnya, tidak apa-apa kecuali apa yang ingin saya lakukan adalah membuat 17 plot lagi dengan cara menyorot salah satu level (yaitu salah satu warna) tetap sama dan sisanya diabu-abukan sebagai cara untuk membedakan satu tingkat dari yang lain. Karena ada 17 level dan warnanya sangat mirip, sulit untuk membedakan beberapa level sekarang.

Saya harap itu masuk akal -- senang mengedit dan memberikan lebih banyak informasi. Saya akan menghargai setiap petunjuk atau bantuan yang satu ini. Terima kasih banyak!


Kode

# libraries
library(tidyverse) # for the plot
library(ggplot2) # for the plot
library(scales) # for the x-axis scaling
library(lubridate) # for the "POSIXct" and "POSIXt" class

#data classes
class(df.forum$p.date) # "POSIXct" "POSIXt"
class(df.forum$p.forum) # factor

# the plot
df.forum %>% 
  ggplot(aes(x = p.date, fill = factor(p.forum))) +
  geom_bar(position = "fill", stat = "count", show.legend = TRUE) + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1,vjust = 0.2)) +
  scale_x_datetime(date_breaks = "1 month",labels = date_format("%b %Y"), limits = c(mdy_hms("10/1/13 20:00:00"),mdy_hms("5/1/14 20:00:00")))

Merencanakan

ggplot2 proportional bar graph plotted

Suntingan / Contoh yang Dapat Direproduksi

Saya juga mencoba membuat contoh yang dapat direproduksi dan sepertinya ada masalah di sini:

    # data
d <- as.POSIXct(
  c("2020-01-01", "2020-01-01","2020-01-01", 
    "2020-01-02", "2020-01-02", "2020-01-02", 
    "2020-01-03", "2020-01-03", "2020-01-03"))

t <- as.factor(
  c("ATopic", "BTopic", "CTopic",
    "CTopic", "BTopic", "BTopic",
    "CTopic", "ATopic", "BTopic"))

df <- data.frame(d, t)

# the plot
df %>% 
  ggplot(aes(x = d, fill = factor(t))) +
  geom_bar(position = "fill", stat = "count") 

##E rror line: position_stack requires non-overlapping x intervals

Ini menghasilkan plot berikut dengan kesalahan "position_stack membutuhkan interval x yang tidak tumpang tindih": masukkan deskripsi gambar di sini

Dan inilah outputnya: masukkan deskripsi gambar di sini r ggplot2 colors geom-bar

1
bob 11 April 2020, 21:42

1 menjawab

Jawaban Terbaik

Saya pikir penggunaan gghighlight (dalam kombinasi facet_wrap) akan sesuai dengan kebutuhan Anda.

Berikut contoh penggunaan dataset iris untuk memplot Sepal.Width dalam fungsi Sepal.Length untuk setiap spesies. Di sini saya menggunakan facet_wrap untuk memisahkan setiap spesies dan gghighlight untuk menunjukkan warna hanya untuk satu spesies pada satu waktu

library(ggplot2)
library(gghighlight)

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species))+
  geom_point()+
  facet_wrap(~Species)+
  gghighlight()

enter image description here

Apakah itu menjawab pertanyaan Anda?

Jika tidak, pertimbangkan untuk memberikan contoh kumpulan data Anda yang dapat direproduksi (Cara membuat contoh R yang bagus yang dapat direproduksi)

2
Community 20 Juni 2020, 09:12