当前位置: 首页 > news >正文

R语言——直方图

参考资料:学习R

        如果我们要研究一个连续变量的分布,直方图是最佳的选择。

1、base绘图

        在base中可以使用hist函数绘制直方图,与plot函数一样,它没有data参数,须把数据框置于with中。

data(obama_vs_mccain,package="learningr")
with(
  obama_vs_mccain,
  hist(Obama)
)

        直方图的区间间距的数值默认是由斯特奇斯(sturges)算法进行计算。我们可以实验着使用各种不同的子区间(bin)宽度,这样对分布的理解将更加完整:这个非常灵活,可以通过多种方式来实现:给hist函数传递一个数字来指定区间的数目,或一个区间边缘的向量,或用于计算区间数目的算法名称(除了默认的"sturges",还支持"scott"和"fd"),或一个能计算两个选项之一的函数

        hist函数的main参数用于创建图中的主标题。

with(
  obama_vs_mccain,
  hist(Obama,4,main="An exact number of bins")
)

with(
  obama_vs_mccain,
  hist(
    Obama,
    seq.int(0,100,5),
    main="A vector of bin edges"
  )
)

with(
  obama_vs_mccain,
  hist(Obama,"FD",main="The name of method")
)

with(
  obama_vs_mccain,
  hist(
    Obama,
    nclass.scott,
    main="A function for the number of bins"
  )
)

binner<-function(x){
  seq(
    min(x,na.rm=TRUE),
    max(x,na.rm=TRUE),
    length.out=50)
}
with(
  obama_vs_mccain,
  hist(
    Obama,
    binner,
    main="A function for the bin edges"
  )
)

        freq参数控制直方图是否显示计数或显示每个区间的概率密度。当且仅当区间是均匀分布时,它默认为TRUE

with(
  obama_vs_mccain,
  hist(
    Obama,
    freq=FALSE
  )
)

2、lattice绘图

        lattice中的直方图与base类似,不过它还使用了一个data参数,这个参数使它能更易于分割成多个面板,且能把绘图保存为变量。breaks参数与其在hist中的使用方式相同。

library(lattice)
histogram(
  ~Obama,
  obama_vs_mccain  
)

library(lattice)
histogram(
  ~Obama,
  obama_vs_mccain,
  breaks=10
)

        lattice中的直方图能通过type参数为"count"、"density"或"percent"指定y轴的显示类型:计数、概率密度和百分比,默认是百分比。

histogram(
  ~Obama,
  obama_vs_mccain,
  type="density"
)

3、ggplot2

        ggplot2直方图是通过添加一个直方图的geom来创建的。其区间规格很简单:只需要传递一个数字宽度到geom_histogram即可。其原因是为了让我们手动尝试不同的区间数,而不是仅仅满足于默认值。

library(ggplot2)
ggplot(
  obama_vs_mccain,
  aes(Obama)
)+
  geom_histogram(binwidth=5)

        我们可以通过传递特殊的名字..count..或..density..到y-aesthetic中来选择计数或密度。

ggplot(
  obama_vs_mccain,
  aes(Obama)
)+
  geom_histogram(binwidth=5,aes(y=..density..))
输入上面的代码会提示如下:
The dot-dot notation (`..density..`) wasdeprecated in ggplot2 3.4.0.
 Please use `after_stat(density)` instead.

        因此,建议改成新的参数:

ggplot(
  obama_vs_mccain,
  aes(Obama)
)+
  geom_histogram(binwidth=5,aes(y=after_stat(density)))

相关文章:

  • (自用)若依生成左树右表
  • 【WORD】批量将doc转为docx
  • 搬运机器人的基本工作场景及原理
  • 202526 | 消息队列MQ
  • Pytorch深度学习框架60天进阶学习计划 - 第41天:生成对抗网络进阶(三)
  • 51c自动驾驶~合集17
  • jetpack之jetpack的概括和其中组件的简单使用
  • STM32 HAL库 HC - SR04 超声波测距模块驱动实现
  • IoT安全透视:D-Link DWR-932B固件全面逆向漏洞挖掘全面解析
  • 使用Python计算汉密尔顿路径
  • Python实现贪吃蛇二
  • Pandas 中透视表(`pivot_table`)和交叉表(`crosstab`)的区别
  • DeepSeek BLEU和ROUGE(Recall)的计算
  • torch.cat和torch.stack的区别
  • 应急响应靶机-Linux(1)
  • 数据结构*包装类泛型
  • C语言进阶之指针
  • CMD命令行笔记
  • 数据库实验:分组查询与聚集函数的使用
  • Vue3状态管理深度实战:Pinia架构设计与企业级应用
  • 专家分析丨乌美签署矿产协议,展现美外交困境下的无奈
  • 拍摄《我们这一代》的肖全开展“江浙沪叙事”
  • 证监会:坚决拥护党中央对王建军进行纪律审查和监察调查决定
  • 200枚篆刻聚焦北京中轴线,“印记”申遗往事
  • 解放日报:这是一场需要定力和实力的“科技长征”
  • 中方发布《不跪!》视频传递何种信息?外交部回应