Ich versuche, eine Likertskala graphische Darstellung ähnlich einer plotten hier: http://www.r-bloggers.com/plotting-likert-scales/Indizes in ylim von likert Grundstück
Verwenden Sie den Anweisungen auf den Link oben, ich war in der Lage, es zu zeichnen. Ich möchte jedoch bestimmten Text (d. H. Indizes) auf der y-Achse anzeigen.
Ich muss sie wie a_[1x] b_[2x] c_[3x]
plotten, wo ich 3 verschiedene Zeichen (a, b und c) habe, die jeweils die Indizes 1x, 2x und 3x anzeigen.
Zuerst habe ich versucht, dies:
ylim= c("a_1x","b_2x","c_3x")
Dies funktioniert gut, aber die Indizes in der y-Achse nicht angezeigt werden. Ich brauche eigentlich sie zu zeichnen wie a_[1x] b_[2x] c_[3x]
Ich habe auch schon versucht, diese:
ylim= c(expression('a'[1x]),expression('b'[2x]),expression('c'[3x]))
Aber dies erzeugt die folgenden Fehler, wenn ich versuche, es zu zeichnen.
Error in diff(range(as.numeric(limits))) :
(list) object cannot be coerced to type 'double'
Dies ist der Code, der den Likert-Plot generiert.
likert(sgbar.likert,
ylim = yLabels, ## Here yLabels need to contain expression somehow?
xlab="Percentage",
main="Example Diverging Stacked Bar Chart for Likert Scale",
BrewerPaletteName="Blues",
sub="Likert Scale")
Edit:
Hier ist der vollständige Code, wenn euch die Ausgabe und den Test reproduzieren wollen:
set.seed(1234)
library(e1071)
probs <- cbind(c(.4,.2/3,.2/3,.2/3,.4),c(.1/4,.1/4,.9,.1/4,.1/4),c(.2,.2,.2,.2,.2))
my.n <- 100
my.len <- ncol(probs)*my.n
raw <- matrix(NA,nrow=my.len,ncol=2)
raw <- NULL
for(i in 1:ncol(probs)){
raw <- rbind(raw, cbind(i,rdiscrete(my.n,probs=probs[,i],values=1:5)))
}
r <- data.frame(cbind(
as.numeric(row.names(tapply(raw[,2], raw[,1], mean))),
tapply(raw[,2], raw[,1], mean),
tapply(raw[,2], raw[,1], mean) + sqrt(tapply(raw[,2], raw[,1], var)/tapply(raw[,2], raw[,1], length)) * qnorm(1-.05/2,0,1),
tapply(raw[,2], raw[,1], mean) - sqrt(tapply(raw[,2], raw[,1], var)/tapply(raw[,2], raw[,1], length)) * qnorm(1-.05/2,0,1)
))
names(r) <- c("group","mean","ll","ul")
gbar <- tapply(raw[,2], list(raw[,2], raw[,1]), length)
sgbar <- data.frame(cbind(c(1:max(unique(raw[,1]))),t(gbar)))
sgbar.likert<- sgbar[,2:6]
require(grid)
require(lattice)
require(latticeExtra)
require(HH)
sgbar.likert<- sgbar[,2:6]
yLabels = c("a_1x","b_2x","c_3x") # this works fine but it does not show expressions.
#yLabels = c(expression(a[1*x]),expression(b[2*x]),expression(c[3*x])) # this causes the error above
likert(sgbar.likert,
ylim = yLabels, ## Here yLabels need to contain expression somehow?
xlab="Percentage",
main="Example Diverging Stacked Bar Chart for Likert Scale",
BrewerPaletteName="Blues",
sub="Likert Scale")
Die Handlung wie folgt aussieht:
Vielen Dank für Ihre Antwort, aber ich bin mir nicht sicher über Ihren Vorschlag. Soll ich "+ scale_y_discrete (labels = c (Ausdruck (a [1 * x]), Ausdruck (b [2 * x]), Ausdruck (c [3 * x])))" nach likert oder etwas anderem hinzufügen? Wenn ich versuche "ylim = c (Ausdruck (a [1 * x]), Ausdruck (b [2 * x]), Ausdruck (c [3 * x]))", Es hat nicht funktioniert, der gleiche Fehler wurde erzeugt nochmal: Fehler im diff (Bereich (as.numeric (limits))): (list) -Objekt kann nicht gezwungen werden, 'double' einzugeben. Außerdem, wenn ich "ylim = c (" a_1x "," b_2x "," c_3x ") verwende", funktioniert es gut, aber es zeigt die Ausdrücke nicht. –
Vielen Dank! Ihre Lösung hat gut funktioniert! –
Ich schätze für Ihre Hilfe. Ich habe mich gefragt, ob es eine Möglichkeit gibt, den Prozentsatz in der Handlung anzuzeigen? Genau wie dieser: https://strengejacke.files.wordpress.com/2013/07/sjplotlikert2.png –