L'esthétique doit être de longueur, ou de la même longueur que le dataProblems
Je voudrais faire une intrigue avec des valeurs de X comme un sous-ensemble de la mesure et des valeurs de Y un autre sous-ensemble des données mesurées.
Dans l'exemple ci-dessous, j'ai 4 produits p1, p2, p3 et p4. Chaque sont tarifés en fonction de leur inclinaison, la couleur et la version.
Je voudrais créer un multi-facette de la parcelle qui représente la P3 produits (axe des Y) vs P1 produits (axe des X).
Ma tentative comme ci-dessous a lamentablement échoué avec l'erreur suivante:
Erreur: l'Esthétique doit être de longueur, ou de la même longueur que
le dataProblems:sous-ensemble(prix, produit == "p1"), sous-ensemble(prix, produit
== "p3")
library(ggplot2)
product=c("p1","p1","p1","p1","p1","p1","p1","p1","p2","p2","p2","p2","p2","p2","p2","p2","p3","p3","p3","p3","p3","p3","p3","p3","p4","p4","p4","p4","p4","p4","p4","p4")
skew=c("b","b","b","b","a","a","a","a","b","b","b","b","a","a","a","a","b","b","b","b","a","a","a","a","b","b","b","b","a","a","a","a")
version=c(0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2)
color=c("C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2")
price=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32)
df = data.frame(product, skew, version, color, price)
# First plot all the data
p1 <- ggplot(df, aes(x=price, y=price, colour=factor(skew))) + geom_point(size=2, shape=19)
p1 <- p1 + facet_grid(version ~ color)
p1 # This gavea very good plot. So far so good
# Now plot P3 vs P1
p1 <- ggplot(df, aes(x=subset(price, product=='p1'), y=subset(price, product=='p3'), colour=factor(skew))) + geom_point(size=2, shape=19)
p1
# failed with: Error: Aesthetics must either be length one, or the same length as the dataProblems:subset(price, product == "p1"), subset(price, product == "p3")
C'est le résultat que je suis dans l'attente d':
- Sous-ensemble de la trame de données, pas les vecteurs.
- il peut l'utiliser sous-ensemble de cette façon: voir
subset(df$price, df$product=='p1')
. C'est l'équivalent dedf$price[df$product == 'p1']
- Ouais...j'y suis arrivé finalement.
- Le problème est que
skew
n'est pas incorporée dans un jeu partiel danscolour=factor(skew)
, donc c'est pas de la bonne longueur.
Vous devez vous connecter pour publier un commentaire.
Le problème est que
skew
n'est pas incorporée dans un jeu partiel danscolour=factor(skew)
, donc c'est pas de la bonne longueur. Depuissubset(skew, product == 'p1')
est le même quesubset(skew, product == 'p3')
, dans ce cas, il n'est pas n'importe quel sous-ensemble est utilisé. Si vous pouvez résoudre votre problème avec:Noter que la plupart des R les utilisateurs d'écrire ce que le plus concis:
Il est mieux de ne pas le sous-ensemble des variables à l'intérieur de
aes()
, et plutôt que de transformer vos données:Similaire à @joran réponse. Remodeler le df, de sorte que le prix de chaque produit sont dans les différentes colonnes:
xx aura colonnes de prix.p1, ... de prix.p4, donc:
donne le résultat de votre image.
J'ai frappé cette erreur parce que j'étais en spécifiant un attribut label dans mon geom (
geom_text
), mais en spécifiant une couleur dans le haut niveau aes:Pour résoudre ce problème, j'ai juste déplacé l'attribut label de la geom et dans le haut niveau aes: