2014-01-23 121 views
3

我試圖用R生成特定類型的圖。如何繪製兩個因子變量之間的多條線

graph

這是圖的描述,我試圖獲取:在x軸 變量(「日期」)是一個因素。其水平在x軸上報告。 此外,y軸上的變量(「主題」)是一個因素,繪製的是每個「日期」級別的計數比例。

因此,例如,讓我們考慮這個數據庫:

data <- data.frame(ID = 1:20, Date = as.factor(c(1,1,1,1, 1, 1,1, 2,2,2,2, 2, 2, 2, 2, 3,3,3, 3, 3)), Theme = as.factor(c("a","b", "b", "c", "c", "c", "c","a","a","a", "a", "b","c", "c","a","a","b","b", "b", "c"))) 

在R,我設法生產堆疊條形圖,計數主題值的比例爲每個日期:

ggplot(data, aes(x = Date)) + geom_bar(aes(fill = Theme), position = 'fill') 

我的目標將生成三條水平連接的,爲每個x軸級別(「Date」)計算y軸變量(「Theme」)的計數比例。

我在網上發現了一種可以做的方式,但我沒有設法讓它們工作。

ggplot(Theme, aes(Date)) + geom_freqpoly(aes(group = Theme, colour = Theme)) 

(我在這裏發現了這個公式:http://docs.ggplot2.org/0.9.3.1/geom_bar.html第13圖基本上是我所期待的。)

感謝您的幫助!

+0

我不認爲你的示例數據充分代表了你想要繪製的內容,但很好的嘗試重現例子。這是你想要做的....'ggplot(aes(日期,主題),數據=數據)+ geom_freqpoly(aes(組=主題,顏色=主題))' –

+0

感謝您的回答,但我還沒有:我得到三條平行於x軸的線...... –

回答

0

感謝Simon O'Hanlon和df239。

最後,我設法得到我想要的東西用這個公式:

ggplot(data, aes(Date)) + geom_freqpoly(aes(group = Theme, colour = Theme)) 

我分享它爲別人誰可以在此頁面上降落。

請注意,如果您爲y軸聲明一個變量,如aes(Date,Theme),它將不起作用!

1

爲您的數據中,最接近如下所示:

ggplot(data, aes(x=Date, y=ID, group=Theme, col=Theme)) + geom_line() + geom_point() 

至於日期,更好的方法是使用標準POSIXct或Date類,它們可以通過相同的ggplot表達可視化並且可以通過添加scale_x_date()或scale_x_datetime函數來進一步定製軸。

+0

感謝您的回答!但是我還沒有到達它:它似乎顯示累積計數(線條全部「向上」右移),而不是跟隨每個x軸因子水平的計數分佈 - 正如我正在嘗試的圖片獲得。請告訴我,如果我可以添加更多信息... –

+0

對不起,我錯過了你的問題。你可以使用'table'函數有效地計算計數,然後用類似的命令繪製它。請讓我知道你是否需要進一步的幫助。 – df239

相關問題