Änderung Darstellung y-Achse Histogramm

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
Martina1909
Beiträge: 7
Registriert: Mi Okt 07, 2020 8:43 am

Änderung Darstellung y-Achse Histogramm

Beitrag von Martina1909 »

Hallo,

ich möchte die Darstellung folgender Histogramme ändern, indem diese in vertikaler Richtung weiter auseinander gezogen sind. Es sollen also die Wertebereiche von y nicht geändert werden, sondern nur die Darstellung der Balken.

Daten, mit denen ich arbeite, beziehe ich von hier (Datei: mietspiegel99.csv):
https://ci.inf-i2.uni-jena.de/so54pom/s ... line=false

Der verwendete Code lautet folgendermaßen (Funktion für Erstellung der Histogramme verwendet):

Code: Alles auswählen

df <- as.data.frame(read.csv("mietspiegel99.csv"))

drawHist <- function(data,xbreaks,xlimit,ylimit,maintitle,xtitle,ytitle,xTicks,yTicks) {
hist(
  data, breaks=xbreaks, freq = FALSE,
  xlim=xlimit, ylim=ylimit, axes = FALSE,
  main=maintitle, xlab = xtitle, ylab = ytitle)
axis(1,at = xTicks)
axis(2,at = yTicks)
lines(density(data))
}

drawHist(
  df$miete, seq(0,3600,by=100),
  c(0,3600),c(0,0.0015),
  "Histogramm und Kerndichteschätzer: Nettomiete","Nettomiete in DM","Dichte",
  seq(0,3600,by=400),seq(0,0.0015,by=0.0005))
  
drawHist(
  df$mieteqm, seq(0,35,by=1),
  c(0,35),c(0,0.8),
  "Histogramm und Kerndichteschätzer: Nettomiete pro qm","Nettomiete pro qm in DM","Dichte",
  seq(0,35,by=5),seq(0,0.08,by=0.02))

drawHist(
  df$mieteqm, seq(0,35,by=1),
  c(0,35),c(0,0.8),
  "Histogramm und Kerndichteschätzer: Nettomiete pro qm","Nettomiete pro qm in DM","Dichte",
  seq(0,35,by=5),seq(0,0.08,by=0.02))
  
 drawHist(
  df$flaeche, seq(20,160,by=4),
  c(20,160),c(0,0.2),
  "Histogramm und Kerndichteschätzer: Wohnfläche in qm","Wohnfläche pro qm","Dichte",
  seq(20,160,by=20),seq(0,0.02,by=0.005))
 
Das erste Histogramm wird noch in für mich akzeptabler Größe dargestellt, bei den weiteren 3 wird die y-Achse stark gestaucht.
Ist das vielleicht eine Einstellung von par, die bei mir nicht korrekt ist?

Danke euch!

LG
Dateianhänge
Beispiel für Histogramm, das nicht gestaucht ist, so stelle ich mir die Darstellung für die anderen 3 Histogramme vor.
Beispiel für Histogramm, das nicht gestaucht ist, so stelle ich mir die Darstellung für die anderen 3 Histogramme vor.
Hist1.png (6.17 KiB) 539 mal betrachtet
Beispiel für stark gestauchtes Histogramm in y-Richtung
Beispiel für stark gestauchtes Histogramm in y-Richtung
Hist2.png (4.79 KiB) 539 mal betrachtet
bigben
Beiträge: 2781
Registriert: Mi Okt 12, 2016 9:09 am

Re: Änderung Darstellung y-Achse Histogramm

Beitrag von bigben »

Im zweiten Aufruf von drawHist schreibst Du:

Code: Alles auswählen

drawHist(
  df$mieteqm, seq(0,35,by=1),
  c(0,35),c(0,0.8),
  "Histogramm und Kerndichteschätzer: Nettomiete pro qm","Nettomiete pro qm in DM","Dichte",
Damit setzt Du ylim = c (0, 0.8). Nun erreicht die Dichte keine Werte in der Nähe von 0,8 und das führt zu dieser komischen Darstellung. Setz mal anstelle der 0.8 einen deutlich kleineren Wert ein. Zum Vergleich: Bei der ersten Grafik reicht die y-Achse nur bis 0,0015 !

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Änderung Darstellung y-Achse Histogramm

Beitrag von Athomas »

Ich rate grundsätzlich zur Benutzung von ggplot2 als Grafiksystem - mittelfristig lohnt sich der Mehraufwand für's Erlernen!
Deine zweite Grafik könnte man etwa so zusammenbasteln:

Code: Alles auswählen

library(ggplot2)
Histogramm <- ggplot(df) +
  theme_bw() +
  geom_histogram(aes(x=mieteqm, y=..density..), breaks = seq(0, 35, by = 1), colour="black", fill="grey95") + 
  geom_density(aes(x=mieteqm), colour="black", size=1) +
  coord_cartesian(xlim=c(0, 35), ylim=c(0, 0.08)) + 
  scale_y_continuous(breaks=seq(0,0.08,0.02)) +
  scale_x_continuous(breaks=seq(0, 35, 5)) +
  ggtitle("ggplot2 ist schöner!") +
  xlab("Nettomiete pro qm in DM") +
  ylab("Dichte") +
  theme(plot.title = element_text(hjust = 0.5))              # wenn's denn zentriert sein muß...
Histogramm
Dateianhänge
Miete_pro_qm.jpeg
Martina1909
Beiträge: 7
Registriert: Mi Okt 07, 2020 8:43 am

Re: Änderung Darstellung y-Achse Histogramm

Beitrag von Martina1909 »

Hallo,

@ Bernhard: Danke für den Tipp, das war schon der Fehler ;-)
@ Athomas: Danke dir für deine ggplot-Version, super! Kann ich gut als Lernunterlage verwenden =)

LG,
Martina
Antworten