Ich versuche eine Flächenberechnung für ein Projekt in der Forstwirtschaft durchzuführen. Die Daten bestehen aus 1241 Übersichten mit zwei relevanten Variablen:ggplot2: Fläche pro Faktor barplot (geom_bar) - enthält fehlende Werte (geom_text)
MiWaReVe: 20 Klassen von Waldtypen, abgekürzt mit Zahlencodes, im Format "Faktor". area_ha: die Fläche eines Waldtyps in Hektar, im Format "num".
Hier ist meine minimale Datenmenge:
structure(list(Id = c(0L, 2L, 3L, 4L, 5L, 17L), MiWaReVe = structure(c(7L,
7L, 14L, 17L, 17L, 17L), .Label = c("", "0", "1.1.", "2.1.",
"2.2.1.", "2.2.2.", "2.3.1.", "2.3.2.", "3.1.1.", "3.1.2.", "3.2.1.",
"3.2.2.", "3.2.3.", "4.1.", "4.2.", "5.1.", "5.2.", "6.", "7.",
"8."), class = "factor"), area_ha = c(8.08759, 8.76723, 5.5033,
1.22659, 4.31278, 8.23421), Owner = structure(c(2L, 2L, 2L, 2L,
2L, 2L), .Label = c("Bundesforsten", "Kommunalwald", "Privatwald",
"Staatswald"), class = "factor"), hint_cl = structure(c(3L, 3L,
3L, 4L, 4L, 4L), .Label = c("A", "B", "C", "D", "E", "X"), class = "factor"),
area_in_per = c(0.216871128099877, 0.23509587657276, 0.147572624140449,
0.032891375182969, 0.115648476721321, 0.220802786950289)), .Names = c("Id",
"MiWaReVe", "area_ha", "Owner", "hint_cl", "area_in_per"), row.names = c(NA,
6L), class = "data.frame")
Id MiWaReVe area_ha Owner hint_cl area_in_per
1 0 2.3.1. 8.08759 Kommunalwald C 0.21687113
2 2 2.3.1. 8.76723 Kommunalwald C 0.23509588
3 3 4.1. 5.50330 Kommunalwald C 0.14757262
4 4 5.2. 1.22659 Kommunalwald D 0.03289138
5 5 5.2. 4.31278 Kommunalwald D 0.11564848
6 17 5.2. 8.23421 Kommunalwald D 0.22080279
Mein Ziel ist es, die Gesamtfläche jedes der Waldtypen zu berechnen und eine BarPlot zeigt prozentuale Verteilung unter Verwendung von ggplot2 zu bauen. Ich tat dies mit dem folgenden Code:
library("ggplot2")
library("scales")
MiWaRe=read.table(file="2017_11_MiWaRe.csv", sep=";",dec="," , header=T)
str(MiWaRe)
# total area AOI
area_total=sum(MiWaRe$area_ha)
# area of each plot in % in a new column
MiWaRe=cbind(MiWaRe, "area_in_per"=MiWaRe$area_ha/area_total*100)
MiWaRe
sum(MiWaRe$`area_in_per`) # check
ggplot(data=MiWaRe, aes(x = factor(MiWaReVe), y=((area_in_per)/sum(area_in_per)))) +
geom_bar(stat="identity") +
scale_y_continuous(labels = percent)
Mit diesem Code ich eine Basisversion des BarPlot bekommen, ich bin zu benötigen.
Jetzt möchte ich die genauen Prozentwerte über meine Balken angezeigt. Ich habe versucht, meinen Code mit dem fast zu einem folgenden:
ich verlängerte meinen Code mit:
ggplot(data=MiWaRe, aes(x = factor(MiWaReVe), y=((area_in_per)/sum(area_in_per)))) +
geom_bar(stat="identity") +
scale_y_continuous(labels = percent)+
geom_text(aes(label = scales::percent((area_in_per)/sum(area_in_per)), y= ..prop..), stat= "count", vjust = 25)
aber it labels only one bar (es ist der Wald Art, die nur einmal vorkommt) und gibt mir die folgende: „Warnmeldung: 19 Zeilen mit fehlenden Werten (geom_text) entfernt. " Ich habe einige Nachforschungen zu dieser Warnmeldung angestellt, aber ich denke immer noch, dass das Problem tiefer ist als zu wenig Anzeigefläche.
Ich wurde auch versucht:
ggplot(data=MiWaRe, aes(x = factor(MiWaReVe), y=((area_in_per)/sum(area_in_per)))) +
geom_bar(stat="identity") +
scale_y_continuous(labels = percent)+
geom_text(aes(label = scales::percent(..prop..),
y= ..prop..), stat= "count", vjust = -1)
aber es doesn't work either, of course.
Ich denke, Sie haben sicherlich bemerkt, dass ich immer noch sehr neu für R bin. In der Tat habe ich nur eine Woche lang das Programm selbst gelernt, aber ich konnte viele andere Probleme dank zu lösen Die Forenbeiträge hier. Ich bin jetzt seit einigen Stunden mit diesem Problem beschäftigt. Also, wenn mir jemand weiter helfen könnte wäre ich sehr dankbar und ich kann mich auf den langen Weg machen, R weiter zu beherrschen.
ein [minimal reproduzierbaren Beispiel] Einschließlich (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) in Frage erhöht Ihre Chancen auf eine Antwort. – jsb
hat einen minimalen Datensatz für ein minimal reproduzierbares Beispiel hinzugefügt ... –