Ich versuche, ein Streudiagramm mit ggplot
mehreren Feldern zu erstellen . Ich habe über diese Streudiagramme und die Farbgebung für ein Feld gelesen, mich aber gefragt, wie ich dies für den ggplot2movies
Datensatz tun würde . Ich wollte basierend auf dem Genre färben, aber diese Genres sind alle aufgeteilt:
> movies <- ggplot2movies::movies
> head(movies)
title year length budget rating votes r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 mpaa Action Animation Comedy Drama Documentary Romance Short
<chr> <int> <dbl> <int> <dbl> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <int> <int> <int> <int> <int> <int> <int>
1 $ 1971 121 NA 6.4 348 4.5 4.5 4.5 4.5 14.5 24.5 24.5 14.5 4.5 4.5 0 0 1 1 0 0 0
2 $1000 a Touchdown 1939 71 NA 6.0 20 0.0 14.5 4.5 24.5 14.5 14.5 14.5 4.5 4.5 14.5 0 0 1 0 0 0 0
3 $21 a Day Once a Month 1941 7 NA 8.2 5 0.0 0.0 0.0 0.0 0.0 24.5 0.0 44.5 24.5 24.5 0 1 0 0 0 0 1
4 $40,000 1996 70 NA 8.2 6 14.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 34.5 45.5 0 0 1 0 0 0 0
5 $50,000 Climax Show, The 1975 71 NA 3.4 17 24.5 4.5 0.0 14.5 14.5 4.5 0.0 0.0 0.0 24.5 0 0 0 0 0 0 0
6 $pent 2000 91 NA 4.3 45 4.5 4.5 4.5 14.5 14.5 14.5 4.5 4.5 14.5 14.5 0 0 0 1 0 0 0
Was ist der beste Weg, um dies zu erreichen (Farbe basierend auf dem Genre)? Jede Hilfe wird sehr geschätzt!
Wie @hrbrmstr angibt, müssen Sie die Daten von breit nach lang transformieren. Sie können tidyr::gather()
in Verbindung mit verwenden dplyr::filter()
, um dies zu erreichen. Diese Kette:
genre
und flag
. Dadurch werden die vielen Spalten (breit) in ein Schlüssel-Wert-Paar (lang) verschoben.genre
(diejenigen, bei denen das Flag == 0 ist) zu entfernen .plot_data
Der verbleibende Code ist ein einfaches ggplot2
Scatterplot von length
vs rating
.
library(dplyr)
library(tidyr)
library(ggplot2)
library(ggplot2movies)
plot_data <- movies %>%
gather(genre, flag, Action:Short) %>%
filter(flag != 0)
ggplot(plot_data, aes(x = rating, y = length)) +
geom_point(aes(color = genre), alpha = 0.4)
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen