2017-06-21 3 views
0

distanzierte, bin ich zurzeit mit dem Gebrauch von ggplot struggeling. Ich habe folgende Daten:Wie man Barplot mit ggplot

num <- c(5,5,5,5,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8) 
name <- c('4;1','4;1','4;1','4;1','4;2','4;2','4;2','3;3','4;2','3;3','4;2','3;3','4;2','4;3','3;4','4;3','3;4','4;3','3;4','4;3','3;4','4;3','3;4','4;3','3;4','4;3','4;4','4;4','4;4','4;4','4;4','4;4','4;4','4;4') 
x <- c(1.7,1.8,1.9,2.0,1.5,1.6,1.7,1.8,1.8,1.9,1.9,2.0,2.0,1.4,1.5,1.5,1.6,1.6,1.7,1.7,1.8,1.8,1.9,1.9,2.0,2.0,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0) 
min <- c(1.0,0.5,0.3,1.4,1.2,0.8,0.5,1.3,0.3,1.0,0.3,1.4,1.4,1.1,1.4,0.8,1.2,0.5,1.0,0.4,0.8,0.3,0.7,0.3,1.0,0.6,1.1,0.9,0.7,0.5,0.3,0.3,0.3,0.4) 
max <- c(1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,0.6) 
df <- data.frame(num,name,x,min,max) 

Wie man sehen kann, die Datenbereiche von Konfigurationen beschrieben. Was ich möchte, ist so etwas: enter image description here

Ich habe versucht, die geom_bar-Option, aber ohne Erfolg überhaupt. Hat jemand eine Idee, wie ich ggplot für diese Daten und diese Art von Handlung verwenden kann?

P.S. Die x-Achse sollte df$x sein, die y-Achse sollte range(df$min, df$max) sein. Die Farbe sollte von df$name abhängen.

df$num ist nur zum Gruppieren der Daten. Manchmal gibt es nur einen df$name für einen df$num, manchmal gibt es zwei df$name für einen df$num.

+1

Ich warf einen Blick auf Ihre Fragen. [hier] (https://stackoverflow.com/questions/41882223/non-blocking-pthread-stop-or-why-does-stdatomic-flag-slow-down-my-code) solltest du über die Leistung berichten oder [hier] (https://StackOverflow.com/questions/42271735/cast-raw-pointer-of-array-to-unique-ptr) Die Antwort hat Ihr Problem und andere Beispiele klar gelöst. Bitte lesen Sie [Warum sollte ich eine Antwort akzeptieren?] (Https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). Es ist wichtig, zur SO beizutragen, da Sie davon profitieren. Prost. – Masoud

Antwort

0

Ihre Frage ist ein wenig vage, da es keine tatsächliche gewünschte Diagramm darstellt, aber dies würde Ihre Antwort oder ein guter Ausgangspunkt sein:

library(ggplot2) 
#set the whiskers to min/max as well 
#set the middle line to min or max 
#set the color to interaction of name and num columns 
p <- ggplot(df, aes(x = x, ymin = min, lower=min, 
     middle= min, upper=max, ymax = max , fill = interaction(name, num))) + 
geom_boxplot(stat="identity") + 
    coord_cartesian(ylim = c(0, 1.5)) 



library(ggpubr) 
ggpar(p, legend.title = "name.num") #just change the legend title 

Dies wird uns:

enter image description here

+0

Sehr schön !!! Danke vielmals. Gibt es eine Möglichkeit, die "Tick" -Größe zu ändern? so dass die X- und Y-Achse 0,1 Schritte bekommen? – Hymir

+0

@Hymir https://stackoverflow.com/questions/11335836/increase-number-of-axis-ticks – Masoud