2014-02-12 99 views
0

我編寫了一個簡短腳本,用於根據原始數據創建頻率分佈圖。我唯一不能做的就是X軸。正如你在下面看到的,當數字太長時,他們會被寫入難以閱讀的電子記號(同樣,標籤足夠長,可以從圖片中刪除)。更改頻率圖中的x軸

enter image description here

通常我會用digits = X但不幸的是這個符號不能用命令cut使用。完整代碼已附上。此外,任何其他建議,使圖更具可讀性,熱烈歡迎。

##Paramaters definition 
num.bins = 60 #The number of bins you want to be used 
w.data = 2 #The column you have the data in 

##Data loading 
dataset = read.csv(file.choose()) 

##Calculating frequency 
d.min = min(dataset[,w.data]) 
d.max = max(dataset[,w.data]) 

breaks = seq(d.min, d.max, by = (d.max-d.min)/num.bins) 
d.cut = cut((dataset[,w.data]), breaks, right = FALSE, digits = 6) 
d.freq = table(d.cut) 

##Plot 
plot(d.freq, ylab = 'Frequency', las = 2) 
+0

所以'cut'函數有一個'labels'參數來控制間隔的標記方式。你還沒有用標籤的參數說明你想要標記的時間間隔或你迄今嘗試過的時間間隔。 – joran

+0

檢查在這個其他線程的答案:[R在Y軸上更改刻度的格式](http://stackoverflow.com/questions/8918452/r-changing-format-of-scale-on-y-axis)。 – celiomsj

回答

0

奇怪地回答我自己的問題;不過,我找到了解決方案。

cut函數有一個dig.lab參數,它相當於digits。爲什麼具有相同功能的兩個命令用不同的名稱實現對我來說是模糊的。

因此,修改後的代碼看起來是這樣的:

##Paramaters definition 
num.bins = 35 #The number of bins you want to be used 
w.data = 2 #The column you have the data in 

##Data loading 
#dataset = read.csv(file.choose()) 

##Calculating frequency 
d.min = min(dataset[,w.data]) 
d.max = max(dataset[,w.data]) 

breaks = seq(d.min, d.max, by = (d.max-d.min)/num.bins) 
d.cut = cut((dataset[,w.data]), breaks, right = FALSE, dig.lab = 6) 
d.freq = table(d.cut) 

##Plot 
par(mar=c(4,4.5,3,1)) 
par(oma=c(4,2,0,0)) 
plot(d.freq, ylab = 'Frequency', las = 2) 
mtext(side=3, text="Frequency Distribution", line=1.2, cex=1.5) 

這導致:

非常感謝您對@joran和@celiomsj指着我在正確的方向。