2013-05-22 76 views
0

我想繪製一個圖形,其中x軸具有由數字數據創建的標籤表示的非數字數據。讓我用我的模擬例子來解釋。在我的示例中使用的data.log文件可以在here [pastie.org]中找到。使用xYplot的非數字x軸

當執行我的代碼:

library('Hmisc') 
# Please find the "data.log" file in http://pastie.org/7943338 
data = read.table("data.log", col.names=c('DAY','PERIOD','UID','NUMBER'), colClasses=c("UID"="character")) 
attach(data) 
a = summarize(NUMBER, llist(PERIOD, UID), smedian.hilow, na.rm=T) 
detach(data) 
xYplot(Cbind(NUMBER, Lower, Upper)~numericScale(UID)|factor(PERIOD), data = a) 

返回我這個圖形:

Graphic with numeric x-axis

我真正想要的是繪製x值的人物,彷彿UID是一個字符串標籤,但不是數值,因爲它們不是順序的,因此它們在x軸上的分佈不均勻。

我已經有很多事情在努力實現這個目標,我見過的例子關於因素(123)非數字軸(12),但我沒有成功上尋找類似的東西對此。不是專門尋找某人來解決我的問題,因此,爲幫助我找到解決方案的示例,文檔或技術的鏈接是非常值得歡迎的。謝謝。

+1

你可以創建一個速寫或實體模型,你想要什麼呢?這將顯着改善問題。另外,你是否打算離開'xYplot'函數? 'ggplot2'或'grid'軟件包比彈出'xYplot'成你想要的形狀要靈活得多,學習和實施可能會少一些。 – Dinre

+0

@Dinre,是的,我將創建草圖。是的,只要我能夠完成我的需求,我就可以使用任何東西。感謝您提示我ggplot2和網格。 – Eduardo

回答

2

這裏使用ggplot2geom_pointrange一個解決方案:

library(ggplot2) 
ggplot(data=a, aes(x  = factor(UID), 
        y  = NUMBER, 
        ymin = Lower, 
        ymax = Upper )) + 
    geom_pointrange() + 
    facet_grid(PERIOD~.) 

enter image description here

+0

哦!這是驚人的! Dinre建議我使用ggplot2,並且正在閱讀文檔。你的解決方案非常美麗,真的是我想要的!謝謝! – Eduardo