【问题标题】:The plot and boxplot (using package ggplot) give the different results绘图和箱线图(使用包 ggplot)给出不同的结果
【发布时间】:2021-08-24 04:16:41
【问题描述】:

我写了这两个代码,似乎它们给出了不同的结果。

我认为 plot() 给出的代码是正确的。

谁能说出为什么 boxplot() 给出的结果与 plot() 不同,并且 boxplot() 给出的图似乎有问题

顺便说一句,数据集来自R中的包MASS,称为波士顿

install.packages('MASS')
library(MASS)
data_set1<-data(Boston,package='MASS')
attach(Boston)
par(mfrow=c(1,2))
boxplot(rad,crim,log='y')
plot(crim~as.factor(rad),log='y')

最好, 马蒂

【问题讨论】:

    标签: r plot boxplot


    【解决方案1】:

    请务必注意,boxplotplot 是通用函数,它们的行为根据传递给它们的内容而有所不同。在这种情况下,因为您在图中指定了一个因子作为 x 变量,所以实际上归结为比较

    boxplot(rad, crim, log='y')
    boxplot(crim ~ as.factor(rad),log='y')
    

    所以你要么在第一种情况下传递两个不同的参数,要么在第二种情况下传递一个公式。这些行为非常不同。如果你不使用公式,你只会得到你传入的每个变量的箱线图。你可以看看如果你添加其他列名会发生什么

    boxplot(rad, crim, zn, dis, log='y')
    

    您可以看到,您只为传入的每个变量获得了一个单独的箱线图。“1”是所有观察值的 rad 变量的分布,“2”是 crim ,等等。

    当你打电话时

    boxplot(crim ~ as.factor(rad),log='y')
    

    您将获得rad 的每个唯一值的箱线图。使用公式语法时,实际上不可能添加变量。

    有关详细信息,请参阅?boxplot 帮助页面。

    另外我应该提到它通常是bad idea to use attach()。对于支持它的函数,最好使用data= 参数,而对于不支持它的函数,最好使用with()。例如

    with(Boston, boxplot(crim, rad, log="y"))
    boxplot(crim~rad, log="y", data=Boston)
    

    【讨论】:

    • 我说得很有道理。谢谢,弗里克先生
    猜你喜欢
    • 2015-10-14
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多