2014-07-25 74 views
1

我有一個面板數據集,其ID = 1,..,10和時間= -30,...,30。我想繪製一個線圖,其中只有id = 1,10出現,換句話說,我想隱藏其他觀察。Stata - 使用「直接」標籤隱藏/選擇觀察值的面板數據圖

使用圖形編輯器我可以隱藏我不想看到的觀察結果,但是因爲我有很多這些圖形,所以我想使用* .do-文件的命令。

此外,而不是在圖中的圖例,我想有Stata畫一條線,並將標籤直接分配到該行。

另一個問題是關於圖的「設計」:您能否推薦一個網頁或我可以找到更多關於這個的網頁? (即水平的y軸標記,定義最大 - 最小範圍加上滴答等pp)。

+2

請發佈您一直在嘗試的代碼以及爲什麼它不適合您。一個完整的工作示例甚至更好。許多用戶回答問題時,只會請求代碼的帖子被視爲脫離主題。 –

+0

關於「設計」的問題非常普遍。你有沒有檢查'幫助雙向選項'? –

+0

對不起,我的意見是非常無益的。我認爲'help axis_options'的例子應該涵蓋你提到的問題。如果你喜歡教程,UCLA有一些[學習模塊](http://www.ats.ucla.edu/STAT/stata/modules/),可能會有用。 –

回答

2

這裏是如何做到這一點的幾個變量的兩個例子,假設你在原來的長板格式的數據:

webuse nlswork, clear 

foreach var of varlist ln_wage hours { 

    /* Each panel in its own plot of outcome against time */ 
    xtline `var' if inlist(idcode,1,10), ylabel(#15,angle(horizontal)) xlabel(68(10)88) 

    /* Put both panels in the same plot */ 
    separate `var' if inlist(idcode,1,10), by(idcode) gen(obs_) 
    tw line obs_* year 
    drop obs_*  
} 

有沒有辦法來標示個別行(除非你手工做使用圖形編輯器)。

Stata圖形的一個很好的介紹是Michael Mitchell's book。還有pdf graphics manual,它有很多例子。我知道的web resources沒有一個接近。

4

引用@ DimitriyV.Masterov:

有沒有辦法來標示個別行(除非您使用圖形編輯器手工做)。

我會接受這個挑戰。下面是如何在沒有圖形編輯器的情況下標註行的示例:

webuse nlswork, clear 

foreach var of varlist ln_wage hours { 
    separate `var' if inlist(idcode,1,10), by(idcode) gen(obs_) 
    gen byte miss = missing(`var') 
    bys miss idcode (year) : gen labx = year /// 
     if _n == _N & miss == 0 & inlist(idcode,1,10) 
    gen laby = `var' if !missing(labx) 
    tw line obs_* year || /// 
     scatter laby labx, msymbol(i) mlabel(idcode) mlabpos(3) /// 
     name(`var', replace) legend(off) 
    drop obs_* miss labx laby 
} 
+0

也從SSC檢出-sparkline。 –

+0

我站好了。很好的解決方案! –