我有一個數據框,其中一些變量呈現很小的相對變化,而其他變量呈現出很大的變化。舉例來說,請考慮以下的數據幀:爲包含具有不同變化程度的變量的數據集設置繪圖的比例限制
df <- data.frame(IDX = 1:10, V1 = runif(10) + 100000, V2 = runif(10))
具有以下內容:
IDX V1 V2
1 1 100001.0 0.39601382
2 2 100000.1 0.76472032
3 3 100000.1 0.10183021
4 4 100000.2 0.12735142
5 5 100000.8 0.21488898
6 6 100000.1 0.92675265
7 7 100000.5 0.27987290
8 8 100000.6 0.69132304
9 9 100000.5 0.20719782
10 10 100000.8 0.02314787
的絕對變化爲兩個變量是類似(0.10 V1和0.09 V2)。但是,如果我們認爲相對於他們的手段的相對變化,則V1的變化非常小,而出現了V2相反:
> var(df$V1)/mean(df$V1)
[1] 1.082472e-06
> var(df$V2)/mean(df$V2)
[1] 0.2617366
問題是當我試圖讓點陣圖兩個變量,我試着設定X尺度的限制。如果我使用相同的比例爲每個變量(relation = 'same'
,默認設置),我得到如下:
在這裏,你必須用於創建情節代碼:
library(lattice)
library(reshape2)
df <- melt(df, id.vars = 'IDX')
# approach 1
pl <- dotplot(IDX ~ value | variable, df,
scales = list(x = list(relation = 'same')))
print(pl)
由於你可以看到V2的值非常小,當對兩個面板使用相同的比例時,看起來好像在V2值之間沒有變化。如果我讓每個小組獨立X比例,然後我得到如下:
在這裏,你的代碼產生第二個情節:
# approach 2
pl <- dotplot(IDX ~ value | variable, df,
scales = list(x = list(relation = 'free')))
print(pl)
現在的問題是,左側面板的X尺度範圍從100000.2到100001.0,數據看起來好像有很多變化,但事實上並非如此。
不知何故,我想獲得一幅情節,其中左側面板看起來像第一個情節中的左側面板,右側面板看起來像第二個情節中的右側面板。我的想法是根據被繪製變量的平均值來定義X範圍。例如,對於每個面板,X限制可以從0.9 * mean
到1.1 * mean
。但我不知道如何在多個變量(和麪板)的情況下做到這一點。
哇一個例子!這真的很乾淨。我不能停止驚訝格子是如何:) – betabandido
@betabandido你我都。補充'latticeExtra'和'Grid'(加上'sp'和'rasterVis'來表示空間情節),它是非常強大的! –