R绘图 | 单列数据的分布图,对A变量分bin求B变量的平均值

news/2025/1/16 5:52:26/

问题1:单个向量的 density 分布图?

(1) 模拟数据

set.seed(202402)
dat=diamonds[sample(nrow(diamonds), 1000),]> head(dat)
# A tibble: 6 × 10carat cut       color clarity depth table price     x     y     z<dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
1  0.35 Ideal     I     VS2      59.8    57   630  4.6   4.59  2.75
2  0.59 Ideal     D     SI1      61.8    56  1816  5.37  5.4   3.33
3  0.39 Ideal     D     VS1      62      57  1095  4.67  4.71  2.91
4  1.12 Premium   G     IF       60.9    57  9126  6.79  6.68  4.1 
5  0.51 Very Good E     VVS2     62.1    55  2056  5.14  5.16  3.2 
6  1.03 Premium   G     VVS2     60.4    59  7729  6.58  6.56  3.97

(2) 绘制price的分布曲线

效果图:
在这里插入图片描述

ggplot(data = dat, mapping = aes(x=price)) + geom_histogram(aes(y=..density..),binwidth = 400,#bins=30,fill="bisque",color="white",alpha=0.7) + geom_density() +geom_rug() +labs(x='Price') +theme_minimal(base_size = 12)

问题2:按照A的值分bin统计B的平均值,并画图

求不同克拉区间的钻石,其价格的分布及平均值。

  • 对变量 carat 分区间
  • 统计每个 carat 区间的 price 价格的平均值
  • 画图

(1) 使用cut函数对carat列划分到10个区间中,求每个区间price均值

效果图:
在这里插入图片描述
重要函数:cut(x, breaks=n) 对连续向量x分为n个bin,返回每个x值对应的bin范围,因子型。

> # 按照A的值分bin统计B的平均值,并画图 ----
> dat$tags = cut(dat$carat, breaks = 10) #分10个区间
> head(dat)
# A tibble: 6 × 11carat cut       color clarity depth table price     x     y     z tags         <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl> <fct>        
1  0.35 Ideal     I     VS2      59.8    57   630  4.6   4.59  2.75 (0.217,0.499]
2  0.59 Ideal     D     SI1      61.8    56  1816  5.37  5.4   3.33 (0.499,0.778]
3  0.39 Ideal     D     VS1      62      57  1095  4.67  4.71  2.91 (0.217,0.499]
4  1.12 Premium   G     IF       60.9    57  9126  6.79  6.68  4.1  (1.06,1.34]  
5  0.51 Very Good E     VVS2     62.1    55  2056  5.14  5.16  3.2  (0.499,0.778]
6  1.03 Premium   G     VVS2     60.4    59  7729  6.58  6.56  3.97 (0.778,1.06] 求每个carat区间中price的平均值
> results=sapply(split(dat$price, dat$tags), function(x){
+   mean(x)
+ })
> levels(dat$tags)[1] "(0.217,0.499]" "(0.499,0.778]" "(0.778,1.06]"  "(1.06,1.34]"   "(1.34,1.61]"   "(1.61,1.89]"   "(1.89,2.17]"  [8] "(2.17,2.45]"   "(2.45,2.73]"   "(2.73,3.01]"  
> head(results)
(0.217,0.499] (0.499,0.778]  (0.778,1.06]   (1.06,1.34]   (1.34,1.61]   (1.61,1.89] 793.9373     2105.2756     4961.7216     6500.9048     9756.3146    10490.7308 
> #results[levels(dat$tags)]
> plot( as.numeric( results), type="o", pch=19,
+       xlab="bin index", ylab="Price", mgp=c(2,1,0))
> 
> 

(2) 绘制每个carat bin的price的小提琴图

效果图:
在这里插入图片描述

代码:

数据同上(1):> summary(dat)carat               cut      color      clarity        depth           table           price             x        Min.   :0.2200   Fair     : 35   D:129   SI1    :227   Min.   :55.90   Min.   :52.00   Min.   :  345   Min.   :3.900  1st Qu.:0.4000   Good     : 89   E:178   VS2    :220   1st Qu.:61.10   1st Qu.:56.00   1st Qu.:  987   1st Qu.:4.720  Median :0.7000   Very Good:206   F:181   SI2    :173   Median :61.90   Median :57.00   Median : 2362   Median :5.680  Mean   :0.8033   Premium  :254   G:203   VS1    :156   Mean   :61.82   Mean   :57.42   Mean   : 3939   Mean   :5.745  3rd Qu.:1.0600   Ideal    :416   H:136   VVS2   :104   3rd Qu.:62.60   3rd Qu.:59.00   3rd Qu.: 5443   3rd Qu.:6.560  Max.   :3.0100                   I:119   VVS1   : 62   Max.   :79.00   Max.   :73.00   Max.   :18432   Max.   :9.540  J: 54   (Other): 58                                                                  y               z                    tags    Min.   :3.880   Min.   :2.310   (0.217,0.499]:319  1st Qu.:4.740   1st Qu.:2.920   (0.499,0.778]:254  Median :5.700   Median :3.520   (0.778,1.06] :176  Mean   :5.747   Mean   :3.552   (1.06,1.34]  :105  3rd Qu.:6.560   3rd Qu.:4.050   (1.34,1.61]  : 89  Max.   :9.380   Max.   :5.900   (1.61,1.89]  : 26  (Other)      : 31  

绘图代码:

library(ggplot2)
ggplot(dat, aes(x=tags, y=price, fill=tags))+geom_violin(scale="width", color="#00112200")+geom_boxplot(width=0.1, fill="white", outlier.size = 0.1)+geom_jitter(color="blue", alpha=0.2, size=0.5, shape=19)+theme_classic(base_size = 14)+#coord_flip()+theme(axis.text.x=element_text(angle=30, hjust=1),legend.position = "none",)+labs(x="carat", y="price")+#ylim(0.5, 0.85)+scale_fill_manual(values= c(scales::hue_pal()(12)) )

http://www.ppmy.cn/news/1363464.html

相关文章

网络编程中的问题总结

1、服务端重启后bind失败&#xff0c;因为TCP 套接字状态 TIME_WAIT 引起&#xff0c;该状态在套接字关闭后约保留 2 到 4 分钟。在 TIME_WAIT 状态退出之后&#xff0c;套接字被删除&#xff0c;该地址才能被重新绑定而不出问题。可以通过setsockopt()设置Socket描述符的选项S…

react useMemo 用法

1&#xff0c;useCallback 的功能完全可以由 useMemo 所取代&#xff0c;如果你想通过使用 useMemo 返回一个记忆函数也是完全可以的。 usecallback(fn,inputs)is equivalent to useMemo(()> fn, inputs). 区别是:useCallback不会执行第一个参数函数&#xff0c;而是将它返…

mac 配置faas 全局二进制命令

FaaS&#xff08;即功能即服务-Function as a Services&#xff09;是一种云计算服务&#xff0c;允许客户执行代码来响应事件&#xff0c;而无需管理通常与构建和启动微服务应用程序相关的复杂基础架构 在互联网上托管软件应用程序通常需要配置和管理虚拟服务器或物理服务器&…

【电子书】信息安全

资料 wx&#xff1a;1945423050 整理了一些互联网电子书&#xff0c;推荐给大家 信息安全 11招玩转网络安全&#xff1a;用Python&#xff0c;更安全.epubAI安全之对抗样本入门.epubAndroid安全技术揭秘与防范.epubArduino家居安全系统构建实战.epubWeb安全防护指南&#xff…

GDB之(1)入门指令参数介绍

GDB之(1)基础入门指令参数介绍 Author&#xff1a;Once Day Date: 2022年7月29日/2024年2月26日 漫漫长路&#xff0c;才刚刚开始… 全系列文章请查看专栏: Linux实践记录_Once-Day的博客-CSDN博客 推荐参考文档&#xff1a; GDB: The GNU Project Debugger (sourceware.o…

java高级——反射

目录 反射概述反射的使用获取class对象的三种方式反射获取类的构造器1. 获取类中所有的构造器2. 获取单个构造器 反射获取构造器的作用反射获取成员变量反射变量赋值、取值获取类的成员方法反射对象类方法执行 反射简易框架案例案例需求实现步骤代码如下 反射概述 什么是反射 反…

CSDN的AI创作助手

CSDN用到的AI创作助手详细介绍 CSDN&#xff08;中国软件开发者网&#xff09;是一个面向IT技术人员的综合性技术社区&#xff0c;提供技术问答、博客文章、开发工具等内容。AI创作助手是CSDN提供的一项人工智能服务&#xff0c;旨在帮助用户快速高效地创作文章。 AI创作助手基…

matlab simulink永磁同步电机pid控制

1、内容简介 略 53-可以交流、咨询、答疑 2、内容说明 略 摘 要 19世纪90年代&#xff0c;美国西屋电气公司研制出了世界上第一台交流同步电机。随着科学技术的迅猛发展和生产工艺的持续进步&#xff0c;在20世纪50年代出现了永磁同步电机。它以永磁体代替电励磁绕组&#…