2017-03-02 35 views
0

背景R中創建「柱狀圖」從X值和概率估計的輸入

我試圖從「貝葉斯數據分析」關於Dirichlet過程的章節複製類似如下圖Gelman等人人。這些圖像描繪了一個突破的過程。

這些圖有效地顯示了四種不同情景的概率分佈。橫軸是「數據」值,縱軸是與該數據相關的概率估計值。

Desired

我的問題

我想我已經有創造情節所必需的數據;數據點和相應的概率估計值(是的,因爲它是一個概率密度函數,所以概率實際上是圍繞這些點的小間隔)。問題是我不知道如何製作一個包含上面那些好棒的情節。通常在R中,直方圖是根據數據值的向量構建的,但我有兩列。 (和搜索沒有透露任何東西)

## data 
head(dat) 
    thet prob.estim 
1 -0.1532657 0.05451808 
2 -1.2471313 0.06407723 
3 0.3452990 0.06608997 
4 0.4886357 0.12634090 
5 1.3894174 0.02572439 
6 -0.7041029 0.03688599 

最近我可以得到只是看起來不好。請參閱下面的代碼和圖片。 (注意,概率估計,由於使用隨機數生成的是不同的)

# Best I can do, but not bars 
plot(dat$thet, dat$prob.estim, main = "Alpha = 1") 

Best I can do

回答

0

首先,生成一些數據一起工作:

set.seed(24601) 
thet <- seq(-3, 3, by=.05) 
prob.estim <- rbeta(length(thet), 1, 100) 
dat <- data.frame(thet = thet, 
        prob.estim = prob.estim) 
# putting in the spike in the plot 
dat[thet == 1, ]$prob.estim <- .99 

生成的情節,與基地圖形

首先,這裏是散點圖版本(所以你可以看到我生成的數據與你的數據比較)

plot(dat$thet, dat$prob.estim) 

scatter 這裏,它是作爲一個barplot

barplot(names.arg = dat$thet, height = dat$prob.estim) 

bar

生成的情節,與GGPLOT2

如果你有興趣在控制你的圖的外觀(這聽起來像你),你可能想要移動到ggplot2。

library(ggplot2) 
ggplot(dat, aes(y = prob.estim, x = thet)) + 
    geom_bar(stat = "identity") + 
    theme_classic() 

bar_ggplot

+0

感謝。但這對我不起作用。對於ggplot,我只是得到一個空的繪圖窗口。如果我先按第一個排序,則barplot會起作用,但我無法調整座標軸。即使我嘗試更改xlim,軸自動從-4到-3。有任何想法嗎? – RMurphy

+0

聽起來像數據的問題。對於ggplot,你能確認數據是保存在一個數據框(在這個例子中是'dat'),'thet'和'prob.estim'都是數字嗎?要檢查,使用'str(dat)' –