【问题标题】:Set default plot attributes for a dataframe设置数据框的默认绘图属性
【发布时间】:2016-04-18 06:31:11
【问题描述】:

许多包都包含数据帧,其中 plot(df) 产生特定的输出。例如。 nlme 包含 'Dialyzer' 数据框,它在 plot(Dialyzer) 上使用格子(格子包)生成一个图,其中代码实际上是:

dotplot(rate ~ pressure | Subject, data="Dialyzer")

此代码似乎包含在 dataframes 属性中:任何人都可以为我提供指南或包含有关如何设置 dataframe 的默认绘图的指南吗?

【问题讨论】:

    标签: r plot dataframe default lattice


    【解决方案1】:

    这是由对象的类决定的。注意 Dialyzer "data.frame" 的类。

    > class(Dialyzer)
    [1] "nfnGroupedData" "nfGroupedData"  "groupedData"    "data.frame"
    

    当你调用 plot 时,它会遍历这个类的条目并尝试找到plot.* 方法。使用它找到的第一个。如果一切都失败了,总会有data.frame

    > methods("plot")
     [1] plot.acf*              plot.ACF*              plot.augPred*          plot.compareFits*      plot.data.frame*      
     [6] plot.decomposed.ts*    plot.default           plot.dendrogram*       plot.density*          plot.ecdf             
    [11] plot.factor*           plot.formula*          plot.function          plot.gls*              plot.hclust*          
    [16] plot.histogram*        plot.HoltWinters*      plot.intervals.lmList* plot.isoreg*           plot.lm*              
    [21] plot.lme               plot.lmList*           plot.medpolish*        plot.mlm*              plot.nffGroupedData*  
    [26] plot.nfnGroupedData*   plot.nls*              plot.nmGroupedData*    plot.pdMat*            plot.ppr*             
    [31] plot.prcomp*           plot.princomp*         plot.profile.nls*      plot.ranef.lme*        plot.ranef.lmList*    
    [36] plot.raster*           plot.shingle*          plot.simulate.lme*     plot.spec*             plot.stepfun          
    [41] plot.stl*              plot.table*            plot.trellis*          plot.ts                plot.tskernel*        
    [46] plot.TukeyHSD*         plot.Variogram*    
    

    如果您想使用特定方法,可以使用plot.* 显式调用它,例如plot.default.

    【讨论】:

    【解决方案2】:

    R 是多态的。这意味着相同的功能可以导致对不同类别的对象进行不同的操作。您可以将plot() 应用于许多不同类型的对象,每个对象都会得到不同类型的图。例如,print()summary() 和许多其他人也可以这样说。

    多态性使事情更容易记住。如果一个函数对你来说是新的,只需尝试在函数的输出上运行plot();它可能会起作用。如果您是程序员,多态性允许编写相当通用的代码,而不必担心正在操作什么类型的对象,因为底层的类机制会处理这些问题。 与多态一起工作的函数,例如plot()print(), 被称为通用。当调用泛型函数时,R 会将调用传递给相关类方法:它将调用重新路由到为特定对象的类定义的函数。

    【讨论】:

      猜你喜欢
      • 2019-07-04
      • 1970-01-01
      • 2014-03-13
      • 2012-01-08
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      相关资源
      最近更新 更多