Ich habe diesen Beitrag Two horizontal bar charts with shared axis in ggplot2 (similar to population pyramid) und ähnliche, die mir nicht helfen konnten, mein Problem zu lösen, weil meine Daten anders sind. Wo ich versuche unterWie kann ich meine Daten nebeneinander barplot mit Punkten
zu erklären, habe ich ein Datum wie unter
dfm<- structure(list(Var1 = structure(1:35, .Label = c("F10", "F11",
"F12", "F13", "F14", "F15", "F16", "F18", "F19", "F2", "F21",
"F25", "F3", "F30", "F35", "F4", "F5", "F58", "F6", "F60", "F7",
"F79", "F8", "F9", "F97", "F117", "F17", "F22", "F23", "F26",
"F31", "F41", "F61", "F67", "F87"), class = "factor"), Freq.x = c(4L,
1L, 2L, 3L, 4L, 1L, 2L, 2L, 1L, 252L, 1L, 2L, 106L, 1L, 1L, 56L,
32L, 1L, 28L, 1L, 17L, 1L, 10L, 7L, 1L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA), Freq.y = c(12L, 3L, 6L, NA, 7L, NA, 1L, NA,
2L, 306L, 1L, 2L, 170L, NA, NA, 69L, 45L, NA, 35L, NA, 20L, NA,
13L, 7L, NA, 1L, 3L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L)), .Names = c("Var1",
"Freq.x", "Freq.y"), row.names = c(NA, -35L), class = "data.frame")
Ich habe eine gegenseitige Spalte namens Var1 und zwei Spalten Freq.x und Freq.y ich in vertikaler Hinsicht plotten BarPlot will und Setzen Sie einen red
oder blue
Punkt oben in jedem Balken.
Ich mag die Freq.x auf der rechten Seite plotten, Freq.y auf der linke Seite und die F2 ... in der Mitte sowohl als Y-Achse
So etwas wie diese
Ich habe viele Dinge ausprobiert, aber ich konnte es nicht schaffen.
Die nächstgelegene ich habe ist mit dem folgenden Code
par(mfrow=c(1,2))
barplot(dfm$Freq.y,axes=F,horiz=T,axisnames=FALSE)
axis(side=1,at=seq(1,252,50))
barplot(dfm$Freq.x,horiz=T,axes=T,las=1)
Wenn Sie nur die Figur als den oben genannten Post plotten, Sie sehen, dass es falsch Figur für meine Daten zum Beispiel schenkt
library(grid)
g.mid<-ggplot(dfm,aes(x=1,y=Var1))+geom_text(aes(label=Var1))+
geom_segment(aes(x=0.94,xend=0.96,yend=Var1))+
geom_segment(aes(x=1.04,xend=1.065,yend=Var1))+
ggtitle("")+
ylab(NULL)+
scale_x_continuous(expand=c(0,0),limits=c(0.94,1.065))+
theme(axis.title=element_blank(),
panel.grid=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank(),
panel.background=element_blank(),
axis.text.x=element_text(color=NA),
axis.ticks.x=element_line(color=NA),
plot.margin = unit(c(1,-1,1,-1), "mm"))
g1 <- ggplot(data = dfm, aes(x = Var1, y = Freq.x)) +
geom_bar(stat = "identity") + ggtitle("Number of sales staff") +
theme(axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
plot.margin = unit(c(1,-1,1,0), "mm")) +
scale_y_reverse() + coord_flip()
g2 <- ggplot(data = dfm, aes(x = Var1, y = Freq.y)) +xlab(NULL)+
geom_bar(stat = "identity") + ggtitle("Sales (x $1000)") +
theme(axis.title.x = element_blank(), axis.title.y = element_blank(),
axis.text.y = element_blank(), axis.ticks.y = element_blank(),
plot.margin = unit(c(1,0,1,-1), "mm")) +
coord_flip()
library(gridExtra)
gg1 <- ggplot_gtable(ggplot_build(g1))
gg2 <- ggplot_gtable(ggplot_build(g2))
gg.mid <- ggplot_gtable(ggplot_build(g.mid))
grid.arrange(gg1,gg.mid,gg2,ncol=3,widths=c(4/9,1/9,4/9))
siehe die Handlung und schauen Sie sich zum Beispiel die F2-Werte für beide dfs Sie sehen? beide sind die höchsten Werte, aber in diesem Diagramm zeigen sie am wenigsten über die zweite Antwort. Sie Kerl schmelzen die Daten und es machte mich verrückt, meine Daten zu schmelzen, so dass ich nicht herausfinden konnte, wie man es auf der Grundlage dieser über die dritte, es ist völlig aus meinem Interesse heraus, weil ich nur eine Handlung mit meinen Daten brauchen und es nicht
nach Zuweisung der g.mid Spaltung, ist es nicht die Reihenfolge berücksichtigt werden, beginnt es von 87 bis zum Ende, während die Reihenfolge meiner dfm
beginnt von 2
wo Ihre g.mid definiert? –
@sandipan Ich habe das oben hinzugefügt, aber es gibt viele Probleme damit. zum Beispiel ist es gut, wenn man den Datenbereich kennt und die richtigen Werte nicht der richtigen 'yaxis'etc zuweist. – nik