2014-02-11 105 views
1

我試過尋找這個答案,但沒有一個解決方案已經工作。我用以下代碼創建了一個圖:在xyplot中減少刻度標記R

library(lattice) 
xyplot(Births.Registered..Number. ~ X, data=CSOStats, scales=list(
y=list(tick.number = 10))) 

我已經能夠更改y軸的刻度線。我想減少X軸的刻度線數量。 x軸上的日期格式爲「1960Q1」,「1960Q2」等。我無法在保留相應刻度名稱的同時減少圖形上的刻度數量。理想情況下,我可以每隔5年看一次刻度(每20次刻度),但我無法做到這一點。這是目前圖形的圖片。

enter image description here

+1

你應該提供一些數據。你有沒有嘗試過定義x尺度? 'scale = list(y = list(tick.number = 10),x = list(at = where.you.want.them,labels = your.labels))' –

+0

謝謝。我不知道如何使用'at'的說法。使用了一個序列,現在它完美地工作。 (y = list(tick,number = 20,at = seq(1,212,20)),y = list(tick。數字= 10))) –

回答

1

tick.number不適用於characterfactor(從?xyplot)工作:

「tick.number」的整數,給人的蜱之間 間隔建議的數量。這被忽略的因素, 木瓦或字符矢量,因爲在這些情況下有 沒有自然規則遺漏了一些標籤。

但是你可以使用atlabels,例如:

library("lattice") 

## example data 
df <- data.frame(x=paste0(rep(1960:1999, each=4), paste0("Q", 1:4)), y=1:160) 

## calculate position and create labels 
x.tick.number <- 10 
at <- seq(1, nrow(df), length.out=x.tick.number) 
labels <- round(seq(1960, 1999, length.out=x.tick.number)) 

xyplot(y ~ x, data=df, scales=list(y=list(tick.number=10), 
            x=list(at=at, labels=labels, rot=90))) 

enter image description here