我写了一个简短的脚本来创建原始数据的频率分布图。我唯一不能做的就是x轴。正如您在下面所看到的,当数字太长时,它们会被写入难以阅读的电子记数法(同样,标签也足够长,可以从图片中删除)。
通常我会使用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 :(得分: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指出我正确的方向。