Seite 1 von 1

Änderung Darstellung y-Achse Histogramm

Verfasst: Mi Okt 07, 2020 9:03 am
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

Re: Änderung Darstellung y-Achse Histogramm

Verfasst: Mi Okt 07, 2020 10:24 am
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

Re: Änderung Darstellung y-Achse Histogramm

Verfasst: Mi Okt 07, 2020 10:32 am
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

Re: Änderung Darstellung y-Achse Histogramm

Verfasst: Mi Okt 07, 2020 10:55 am
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