0

我编写了一个简短的脚本来从原始数据创建频率分布图。我唯一不能正确的是x轴。正如您在下面看到的,当数字太长时,它们会被写成难以阅读的电子符号(而且,标签足够长,可以从图片中剪掉)。

在此处输入图像描述

通常我会使用digits = X,但不幸的是,这个符号不能与 command 一起使用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)
4

1 回答 1

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 为我指明了正确的方向。

于 2014-02-13T10:10:25.343 回答