2017-03-31 6 views
1

Warum werden diese Grafiken so unterschiedlich mit den plot und ggplot2? Wie repliziert man die mit dem Befehl hist() erstellten Graphen mit dem Befehl ggplot()?Replizieren von Grafiken in ggplot

library(ggplot2) 
library(ssmrob) 
require(gridExtra) 

data(MEPS2001) 
attach(MEPS2001) 
par(mfrow=c(1,2)) 
hist(ambexp,ylim = c(0,3500),xlim=c(0,20000) ,xlab = "Ambulatory Expenses", ylab = "Freq.",main = "") 
hist(lnambx,ylim = c(0,800),xlim=c(0,12), xlab = "Log Ambulatory Expenses", ylab = "Freq.",main = "") 

enter image description here

df <- data.frame(MEPS2001) 
attach(df) 

par(mfrow=c(1,2)) 
g1 <- ggplot(data = MEPS2001, aes(ambexp)) + 
    geom_histogram(binwidth=.5, colour="black", fill="white") + 
    xlab("Ambulatory Expenses") + 
    ylab("Freq.") + 
    xlim(c(0, 20000)) + 
    ylim(c(0,3500)) 

g2 <- ggplot(data = MEPS2001, aes(lnambx)) + 
    geom_histogram(binwidth=.5, colour="black", fill="white") + 
    xlab("Log Ambulatory Expenses") + 
    ylab("Freq.") + 
    xlim(c(0, 12)) + 
    ylim(c(0,800)) 

grid.arrange(g1, g2, ncol=2) 

enter image description here

Antwort

2

Ihr Problem ist, dass geom_hist natürlich Balken ausgerichtet, so dass sie auf einen Wert zentriert sind. Wenn Sie die X-Achse auf 0 begrenzen, schneiden Sie den Balken ab, der auf 0 zentriert sein sollte (ggplot zeigt ihn nicht an, da er sich in einen negativen x-Wert erstreckt). Dieses Verhalten kann geändert werden, was Sie wollen von boundary in geom_hist wie unten Einstellung:

g1 <- ggplot(data = MEPS2001, aes(ambexp)) + 
    geom_histogram(binwidth=5000, colour="black", fill="white",boundary=0) + 
    xlab("Ambulatory Expenses") + 
    ylab("Freq.")+ 
    xlim(c(0,20000)) + 
    ylim(c(0,3500)) 

g2 <- ggplot(data = MEPS2001, aes(lnambx)) + 
    geom_histogram(binwidth=1, colour="black", fill="white",boundary=0) + 
    xlab("Log Ambulatory Expenses") + 
    ylab("Freq.") + 
    xlim(c(0, 12)) + 
    ylim(c(0,800)) 

grid.arrange(g1, g2, ncol=2) 

yelids

Histograms

+0

Sehr Dank @Pdubbs, sondern weil diese Nachricht haben: Warnmeldung: 6 entfernt Zeilen mit nicht endlichen Werten (stat_bin). – fsbmat

+1

@fsbmat Das ist 'ggplot', das Zeilen löscht, die größer als Ihre obere Grenze auf der x-Achse sind. Führe die Tabelle aus (MEPS2001 $ ambexp> 20000) und du wirst sehen, dass es sechs sind. Ich glaube, 'hist' macht das Gleiche – Pdubbs