ggplot2 3.5发布后,这7种过时画图方法你再也不能用了,立即升级指南

第一章:ggplot2 3.5与tidyverse 2.1生态升级概览

R语言数据可视化生态系统迎来重要更新,ggplot2 3.5版本与tidyverse 2.1的联合发布标志着数据科学生态在性能、一致性和扩展性方面的显著提升。此次升级不仅优化了底层绘图引擎,还增强了与其他tidyverse包的无缝集成。

核心功能增强

  • ggplot2 3.5引入新的主题系统,支持动态主题继承与覆盖
  • 新增data_masking机制,提升dplyr与ggplot2交互时的数据作用域管理
  • 改进图形设备后端,增强对高DPI屏幕和PDF导出的支持

代码兼容性示例

# 使用新版本中的theme_modern()主题
library(ggplot2)

ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point() +
  theme_modern(base_size = 12)  # 新增现代化主题
# 执行逻辑:加载数据 → 绘制散点图 → 应用可继承主题

依赖关系变化

组件旧版本新版本变更说明
dplyr1.0.71.1.0支持管道错误处理改进
tidyr1.2.01.3.0增强pivot函数族性能

安装与验证流程

  1. 更新CRAN镜像源以获取最新包版本
  2. 执行install.packages("tidyverse")自动拉取ggplot2 3.5+
  3. 使用packageVersion("ggplot2")确认版本号
graph LR A[安装tidyverse 2.1] --> B{自动依赖解析} B --> C[ggplot2 3.5] B --> D[dplyr 1.1+] C --> E[启用新主题系统] D --> F[改善数据传入逻辑]

第二章:dplyr 2.0核心变革与代码迁移

2.1 新式数据动词重构:理解across()与.by参数的全面应用

在现代数据操作语法中,across() 与 .by 构成了动词链式处理的核心增强机制。它们提升了变换的表达力和分组灵活性。
across() 的批量列操作能力
across() 允许对多列统一应用函数,避免重复代码:

mutate(data, across(where(is.numeric), ~ .x * 2))
该语句将所有数值型列的值翻倍。where(is.numeric) 定位目标列,~ .x * 2 为变换函数。
.by 参数实现即时分组
.by 在 summarise 或 mutate 中直接指定分组变量,无需提前调用 group_by:

summarise(data, avg = mean(value), .by = category)
等价于先 group_by(category) 再汇总,语法更紧凑,提升可读性。 两者结合可构建高效、清晰的数据转换流程。

2.2 分组操作的范式转移:从`group_by %>% summarize`到`summarize(.by = )`的实践演进

R语言中数据分组聚合的传统方式依赖`dplyr`的管道组合:

library(dplyr)
mtcars %>%
  group_by(cyl) %>%
  summarize(mean_mpg = mean(mpg))
该模式逻辑清晰,但语法冗长。随着`dplyr`1.0.0版本引入`.by`参数,分组聚合实现了一步到位:

summarize(mtcars, mean_mpg = mean(mpg), .by = cyl)
`.by`参数直接在`summarize`内部指定分组变量,省去管道与中间`group_by`步骤,提升代码紧凑性与执行效率。
语法演进对比
模式语法结构优势
传统模式group_by + summarize可读性强,适合复杂流程
新式模式summarize(.by = )简洁高效,减少对象创建
这一变化体现了函数式编程向“单一动作完成复合操作”的演进趋势。

2.3 列操作语法统一化:`relocate()`、`rename_with()`等函数的函数式编程升级

在现代数据处理中,列操作的语法一致性显著提升了代码可读性与维护性。`dplyr` 提供了 `relocate()` 和 `rename_with()` 等函数,支持函数式编程范式,实现更灵活的列管理。
列位置调整:relocate()
df %>% relocate(starts_with("age"), .before = id)
该代码将列名以 "age" 开头的所有列移动到 `id` 列之前。`.before` 参数指定目标位置,也可使用 `.after`。`starts_with()` 是选择辅助函数,增强列选择表达能力。
批量重命名:rename_with()
df %>% rename_with(toupper, contains("name"))
此操作将包含 "name" 的列名转换为大写。第一个参数为函数(如 `toupper`),第二个为列选择条件,实现模式化批量处理。
  • 函数式接口提升代码抽象层级
  • 与 `across()` 形成统一操作范式
  • 支持任意函数组合,扩展性强

2.4 数据管道健壮性增强:`rows_upsert()`、`rows_patch()`在真实场景中的安全合并策略

在高并发数据写入场景中,确保数据一致性与系统健壮性至关重要。`rows_upsert()` 和 `rows_patch()` 提供了幂等性操作保障,有效避免重复插入或状态错乱。
核心操作语义对比
  • upsert:根据唯一键判断是否存在,不存在则插入,存在则更新;
  • patch:仅对已有记录执行部分字段更新,忽略新增数据。
安全合并策略实现
def safe_merge(data):
    # 使用业务主键作为冲突判定依据
    result = db.rows_upsert(
        table="events",
        rows=data,
        conflict_keys=["event_id"],
        update_on_conflict=True
    )
    return result.status == "success"
该逻辑通过指定 conflict_keys 避免主键冲突,确保批量写入时的数据完整性。
异常处理与重试机制
结合指数退避策略,在网络抖动或短暂锁竞争时提升管道韧性,保障最终一致性。

2.5 过时函数停用清单:`mutate_all`、`summarise_if`等家族函数的替代方案实战

随着 dplyr 1.0.0 版本发布,`mutate_all`、`summarise_if` 等基于“_if”、“_all”、“_at”模式的函数已被标记为过时,推荐使用 `across()` 统一替代。
核心替代方案:`across()` 函数
`across()` 允许在 `mutate()` 和 `summarise()` 中跨多列应用函数,结合 `where()` 可实现条件筛选。

# 旧写法(已过时)
df %>% summarise_if(is.numeric, mean, na.rm = TRUE)

# 新写法
df %>% summarise(across(where(is.numeric), ~mean(.x, na.rm = TRUE)))
上述代码中,`where(is.numeric)` 选择所有数值型列,`~mean(.x, na.rm = TRUE)` 为匿名函数,`.x` 代表当前列值。`across()` 提升了语法一致性,减少函数冗余。
常见映射对照表
旧函数新方案
mutate_allmutate(across(everything(), ...))
summarise_ifsummarise(across(where(...), ...))
mutate_atmutate(across(c("col1", "col2"), ...))

第三章:ggplot2 3.5图形系统底层革新

3.1 图层构建机制更新:新`layer()`参数规范与性能优化原理

新版图层构建机制重构了layer()函数的参数结构,引入声明式配置接口,提升可读性与执行效率。

参数规范化设计
  • source:指定数据源URI,支持动态绑定
  • encoding:字段到视觉通道的映射配置
  • transform:新增预处理流水线支持
性能优化实现
const layer = new Layer({
  source: '/api/data',
  encoding: { x: 'time', y: 'value' },
  optimize: { incremental: true, cacheSize: 1000 }
});

上述代码启用增量渲染与缓存复用机制。当incremental设为true,仅重绘变化区域,减少DOM操作开销;cacheSize控制最近千条数据缓存,避免重复请求与解析。

渲染流程对比
版本参数模式平均渲染耗时(ms)
v1.0命令式210
v2.0声明式98

3.2 主题系统扩展能力:`theme()`中新增元素控制与自定义组件注入

现代主题系统要求具备高度可扩展性,以支持动态元素控制和组件定制。通过 `theme()` 函数的增强设计,开发者可在运行时动态注入自定义组件。
自定义组件注入机制
使用 `theme()` 可注册全局组件,如下示例将一个深色模式切换按钮注入主题:
theme({
  components: {
    'dark-mode-toggle': () => import('./components/DarkModeToggle.vue')
  },
  elements: {
    header: { visible: true, sticky: true }
  }
});
上述代码中,`components` 字段允许异步加载 Vue 组件,实现按需加载;`elements` 控制 DOM 元素的显示行为与交互属性。
扩展配置结构
支持的配置项包括:
  • components:映射组件名到动态导入函数
  • elements:定义页面元素的可见性与行为
  • variables:覆盖 CSS 自定义变量,实现样式动态调整
该机制提升了主题系统的灵活性,使第三方插件能无缝集成至现有 UI 架构中。

3.3 坐标系行为一致性改进:`coord_cartesian()`与`lims`交互逻辑变更解析

在 ggplot2 的早期版本中,`coord_cartesian()` 与 `lims()` 在设置坐标轴范围时存在行为不一致问题。前者仅缩放视图,而后者会触发数据子集过滤,导致结果歧义。
行为差异对比
  • lims():修改数据范围,影响统计计算
  • coord_cartesian():仅调整可视化窗口,保留原始数据
新版本统一逻辑

ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  coord_cartesian(xlim = c(2, 4)) +
  lims(x = c(2, 4))
上述代码现在保持行为一致:均仅控制显示范围,不再修改数据管道。该变更避免了因函数调用顺序引发的意外截断。
参数说明
参数作用
xlim, ylim设定显示区间,不触发数据过滤
coord_cartesian(clip = "off")控制是否裁剪超出范围的图形元素

第四章:经典绘图模式失效与重构策略

4.1 `geom_text()`标签错位修复:位置调整引擎重写后的正确使用方式

在新版 ggplot2 中,`geom_text()` 的位置计算逻辑因底层布局引擎重构而发生变化,导致原有代码可能出现标签偏移或重叠。
核心参数更新
关键参数 `nudge_x`、`nudge_y` 现在基于数据坐标系而非像素单位进行微调,确保跨设备一致性。
ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars))) +
  geom_point() +
  geom_text(nudge_y = 0.5, check_overlap = TRUE)
上述代码中,`nudge_y = 0.5` 将标签整体上移 0.5 单位,避免与点重叠;`check_overlap = TRUE` 启用自动去重机制,提升可读性。
替代方案:使用 `position_nudge()`
对于复杂布局,推荐显式声明位置处理器:
  • position_nudge(x, y):精确控制偏移量
  • position_jitter():随机扰动防重叠
  • position_dodge():分组并列排布

4.2 `position_dodge()`精度问题解决:新版偏移算法在分组柱状图中的精准对齐实践

在使用ggplot2绘制分组柱状图时,`position_dodge()`常用于避免不同组间的重叠。然而,在旧版本中,由于浮点计算误差,柱子未能精确对齐,尤其在宽度不一致或数据密集场景下尤为明显。
问题成因分析
核心问题源于舍入误差和宽度推导逻辑不一致。当多个geom共享位置但宽度微调时,原始算法未统一基准偏移量。
解决方案与代码实现

ggplot(data, aes(x = category, y = value, fill = group)) +
  geom_col(position = position_dodge(preserve = "single"), width = 0.7)
其中,`preserve = "single"`确保各组使用相同宽度进行偏移计算,避免因自动缩放导致错位。
效果对比
参数设置对齐表现
preserve = "total"柱体偏移不稳定
preserve = "single"精准对齐,推荐使用

4.3 统计变换接口标准化:`stat_summary()`与用户自定义函数的兼容性重构

在数据可视化流程中,统计变换的灵活性直接影响图表表达能力。`stat_summary()`作为核心统计层接口,需支持多样化的聚合逻辑。
接口设计演进
早期版本限制了用户自定义函数的传入方式,导致扩展困难。重构后统一采用函数指针与签名校验机制,确保安全性与通用性。
代码示例与参数说明

stat_summary(
  fun = function(x) mean(x, na.rm = TRUE),
  geom = "point",
  aes(y = ..y..)
)
上述代码中,`fun`接收任意一元函数,内部通过闭包封装上下文环境,`..y..`表示经统计变换后的虚拟变量。
  • 支持匿名函数与预定义函数直接传入
  • 自动处理缺失值传播(NA handling)
  • 与`layer()`机制无缝集成

4.4 面向对象绘图API变更:`ggplot_add()`协议更新与扩展包适配指南

随着 ggplot2 3.4.0 版本发布,ggplot_add() 协议进行了重构,增强了对象扩展的类型安全与方法分派机制。

协议变更要点
  • ggplot_add() 现在要求返回值必须是 ggplot 对象,否则抛出错误;
  • 方法注册需显式继承自 ggproto 对象,避免命名空间污染;
  • 扩展包需重新验证 S3 方法绑定顺序。
代码适配示例

ggplot_add.MyExtension <- function(object, plot, params) {
  # object: 扩展组件; plot: 当前ggplot对象; params: 参数列表
  plot$layers <- c(plot$layers, object$layer)
  plot
}

上述代码定义了自定义扩展类型的添加逻辑,object 代表扩展组件,plot 是当前图形对象,params 可传递渲染参数。必须确保最终返回修改后的 plot 实例以符合新协议。

第五章:构建面向未来的R可视化工作流

自动化与可复现的可视化管道
现代数据分析要求可视化流程具备可复现性和自动化能力。利用 targets 包,可以定义依赖关系明确的可视化任务链:
# _targets.R
library(targets)
list(
  tar_target(data, read.csv("data.csv")),
  tar_target(plot, 
    ggplot(data, aes(x = value)) + 
      geom_histogram() +
      theme_minimal(),
    format = "file", 
    cue = tar_cue(mode = "always")
  )
)
执行 tar_make() 即可按需更新图表,避免重复计算。
集成交互式图表到静态报告
结合 htmlwidgets 与 rmarkdown,可在PDF或Word报告中嵌入可交互的 Plotly 图表:
  • 使用 plotly::ggplotly() 将 ggplot 对象转为交互式图表
  • 在 R Markdown 中设置输出格式为 html_document
  • 通过 self_contained: true 确保报告独立部署
版本控制与团队协作策略
将 R 脚本、数据摘要和图表输出纳入 Git 管理,配合 git-lfs 处理大型图像文件。团队成员可通过 GitHub Actions 自动化生成每日可视化看板,并推送到指定分支。
工具用途
targets管理可视化依赖流
ggsave()批量导出多尺寸图表
chromote控制 headless Chrome 渲染复杂 widget
[图表:可视化工作流] 数据源 → 预处理 → 可视化生成 → 格式导出 → 报告集成 → 自动部署
R语言ggplot2画图3 geom_label()和ggplot_Text()的使用详解 主要是用于在图中标注文本 ??geom_label()可以查看其帮助文档 ##Examples p <- ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars)))###建立一个新的画板,标记mtcars的行名 p + geom_text()##展示待标记的文本内容,待标记的文本坐标是(wt,mpg) 见图1 # Labels with background p + geom_la 阅读详情

相关推荐

R语言ggplot2画图

R语言散点图,条形图,箱型图,折线图,直方图

MINGRAN_JIA的博客 2706

R语言数据可视化包ggplot2画图之散点图

R语言数据可视化包ggplot2散点图的基本画图方法。

weixin_55798278的博客 1万+

R语言ggplot2中的theme函数

大家先来看看这幅图吧,今天想分享的内容就和它相关。本人刚开始用R画图的时候其实比较抵触,因为觉得R画图时有的小细节改起来很麻烦,不如Oringin来的直接。究其原因还是代码不熟悉,学的不够扎实。今天就来重新梳理一下思路,主要内容是ggplot2中的theme函数。 这个theme函数主要的用途是调节图的主题,主题主要分为整幅图的(plot),坐标轴的(axis),图例的(legend),面板的(panel)和分面元素(facet)。其中经常用到的是坐标轴主题的修改,比如常见的坐标轴字体大小的修改。图里每一.

zty0104的博客 1万+

R语言ggplot2 | 循环画图及导出

展示数据的方式有很多,图形无疑是最佳的方法之一,因为图形能更直观地展示数据的变化规律。ggplot2是R语言绘图功能最强大的R包之一,大家肯定非常熟悉,但平时绘图的时候可能需要画同类型图很多次,因此循环绘图是很有必要学习和掌握的。今天主要与大家分享ggplot循环画图及保存导出。

R酷的数据科学笔记 6190

ggplot2 画图排列分面技巧

ggplot2 画图排列分面技巧

qq_53666171的博客 1542

热图5:ggplot2画热图及个性化修饰

这节我们讲下ggplot做的热图。实际上,之前heatmap已经足够了,但是ggplot2画图可以进行一些特殊的个性化修饰,一些比较特殊的热图也是通过ggplot做的。 ggplot2与pheatmap热图对比 读取文件和一些需要的包: setwd("D:/生物信息学") A <- read.csv("行列注释.csv",header = T,row.names = 1)#数据行为基因,列为样本 library (ggplot2) library (reshape2)#数据转换 req

qq_42090739的博客 1万+

使用ggplot2画图

Why use ggplot2 ggplot2是我见过最human friendly的画图软件,这得益于Leland Wilkinson在他的著作《The Grammar of Graphics》中提出了一套图形语法,把图形元素抽象成可以自由组合的成分,Hadley Wickham把这套想法在R中实现。 为什么要学习ggplot2,可以参考ggplot2: 数据分析与图形艺术的

Mac Track 3724

玩转数据可视化之R语言ggplot2:(五)分组画图

玩转数据可视化之R语言ggplot2 🌸个人主页:JoJo的数据分析历险记 📝个人介绍:小编大四统计在读,目前保研到统计学top3高校继续攻读统计研究生 💌如果文章对你有帮助,欢迎关注、点赞、收藏、订阅专栏 本系列主要介绍R语言ggplot2的使用 参考资料: ggplot2: Elegant Graphics for Data Analysis 文章目录玩转数据可视化之R语言ggplot2💘5.玩转数据可视化之R语言ggplot2:组合画图🌲5.1 多个分组,一种美学🌳5.2 在不同层级上分组🌴5.

阿里云专家博主、数据科学领域优质创作者、统计er在读 1万+

ggplot2读书笔记2:ggplot()的基本用法以及如何绘制几何对象

Getting Started with ggplot2 ggplot()基本用法 由ggplot2所制得图形有三个重要的组成部分 1. 数据 2. 数据和视觉变量属性之间的映射(aesthetic mappings) 3. 呈现数据结果的图层(一般使用geom()函数) 举例 绘制displ和hwy相关性的散点图,脚本如下: library(ggplot2) mpg ...

qy_microbiota的博客 2万+

《计算机科学概论(第13版)》5-12章

定序是按给定语句的顺序应用每个算法步骤。(primitive):建立一组定义明确的构建块,利用它们来构造和执行算法的表示。可以消除歧义,不会引起误解,就像咱们传统的自然语言(用英语来沟通交流)。(programming language):原语的集合以及说明如何组合这些原语来表示比较复杂的想法的规则集合。用程序设计语言描述的算法可以在计算机上执行。每个原语都有自己的语法和语义,语法指的是原语的符号表示,语义是指该原语的含义。伪代码:用户开发过程中非正式表达想法的符号系统。

输入知识,消化知识,输出知识,分享知识,教人让我学习更好,业精于勤荒于嬉,行成于思毁于随 1036

QGC 转发RTSP流 到RTMP服务器

需求: QGC安卓版在接收摄像机RTSP视频流的时候,需要将视频推送到指定的RTMP服务器。 分析: QGC在处理音视频的时候使用了GStreamer这套框架,本身这套框架是跨平台的,所以无需关系环境,只要想到相应位置,添加对应功能代码,然后配置好安卓端的依赖库即可。 添加位置: GstVideoReceiver.cpp -》start函数负责音视频的流的播放,只需在此处添加上封装好的推流函数即可。 同理在stop中添加停止推流功能。 方便起见,可在界面上配置rtmp的推流地.

qthello 2324

ggplot画图初级

我们再加一个geom_smooth(method = lm, color="red")+拟合曲线帮助我们更好的理解在这里我将曲线的颜色设置为红色。然后创建一个图,这个aes()翻译过来的意思的“美化”,“你能看见的东西”可以设置x,y轴所代表的值。我们直接在上述代码的后面+geom()即可,这个函数会默认使用前面aes()中的变量。这时候我们就能得到下图。ggplot(data = CPS85, mapping = aes(x=exper, y=薪资,这时候的图是空的,因为我们还没有指定加什么内容。

2403_87131305的博客 1532

Wireshark、Fiddler、Charles 三款抓包工具的本质差异与选型指南

抓包工具是网络调试与接口分析的基础能力,其核心在于理解OSI模型分层原理——不同工具工作在不同协议层级,解决不同维度问题。Wireshark面向网络层(L2/L3),可捕获原始数据帧与TCP握手细节,适用于DNS异常、丢包重传等底层问题定位;Fiddler和Charles则工作在应用层(L7),作为HTTP(S)代理实现HTTPS解密、请求改写与弱网模拟,是API调试与移动端测试的首选。技术价值体现在:精准匹配问题域(如证书固定需Fiddler脚本绕过,iOS调试依赖Charles证书信任链),避免‘用显微

weixin_28831341的博客 253

ggplot2升级必看:3.5版本主题系统重构带来的7个关键变化及应对策略

掌握R语言ggplot2 3.5的主题定制与交互式扩展(plotly),应对版本升级带来的主题系统重构。详解7大变化、自定义主题迁移方法及plotly交互集成技巧,提升数据可视化效率。适用科研绘图与报告场景,值得收藏。

ProcePerch的博客 1008

【脑电绘图教程 2】使用Brainstorm进行脑电处理及源定位

Brainstorm 是一个开源应用程序,支持MEG、EEG、fNIRS、ECoG、深度电极和其他电生理学的数据分析,尤其用于MEG、EEG的源定位。Brainstorm的主要优点是其简单直观的图形界面,不需要进行任何编程,即可上手MEG、EEG分析,此外,它还支持多种数据类型(基本上EEGLab支持的,它都支持),并且具有数据批量处理功能,可以很方便的分析自己的数据。

qq_40735196的博客 1万+

从零构建HFSS连接器仿真模型:以SMP接口的精准复现为例

本文详细介绍了如何从零构建HFSS连接器仿真模型,以SMP接口的精准复现为例。通过获取官方模型、导入技巧、信号路径提取和介质结构复现等步骤,帮助工程师避免常见错误,提升高频电路仿真的准确性。文章特别强调了模型精度对仿真结果的影响,并提供了实用的调试和管理建议。

weixin_29041767的博客 429

R ggplot2

ggplot2 分段添加拟合函数,只需要在aex中添加colour字段。 运行结果:

qq_38607066的博客 4786

Microsemi Libero系列教程(四)——PLL的使用

文章目录PLL是什么Libero中PLL的使用官方文档 系列教程:Microsemi Libero系列教程 PLL是什么 PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取资料等。PLL用于振荡器中的反馈技术。 许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步。一般的晶振由于工艺与成本原因,做不到很高的频率...

whik1194的博客 7212

ggplot2画图教程

ggplot2画图教程 ggplot2是什么? ggplot2是用于绘图的R语言扩展包,其理念根植于《Grammar of Graphics》一书。它将绘图视为一种映射,即从数学空间映射到图形元素空间。例如将不同的数值映射到不同的色彩或透明度。该绘图包的特点在于并不去定义具体的图形(如直方图,散点图),而是定义各种底层组件(如线条、方块)来合成复杂的图形,这使它能以非常简洁的函数构建各类图形,而且默认条件下的绘图品质就能达到出版要求。 想了解一下ggplot2都能干点啥? 先看看 《ggplo.

wangprince2017 874

模型预测控制(MPC)解析(三):多输入多输出系统

本文为阅读笔记,仅供学习交流使用!!! 在之前的文章中,为了简单起见,以单输入单输出系统为例介绍了MPC控制的实现方法。因为使用的是状态空间方程作为系统模型,这种方法可以轻松的扩展到多输入多输出系统中。 ...

行者无疆的博客 1万+

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏5(附项目源码,完结)

本期是本项目的最后一篇,主要内容是配置环境、生成不同敌人、结束重开。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2573

R语言之ggplot2画图篇

1. qplot

小凤的博客 4万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

掌握这3个margin技巧,让你的ggplot2图表立即专业起来

掌握ggplot2的theme元素margin设置技巧,轻松提升图表专业度。通过调整绘图边距、标题间距和图例位置,解决布局拥挤问题,适用于科研论文与数据报告。三种实用方法,让可视化更清晰美观,值得收藏。

ProceGlow的博客 765

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ggplot2|详解八大基本绘图要素

"一张统计图形就是从数据到几何对象(geometric object, 缩写为geom, 包括点、线、条形等)的图形属性(aesthetic attributes, 缩写...

大数据技术派 9453

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

[R语言]ggplot2画图保存方法

##方法一 ggsave(filename, plot = last_plot(), device = NULL, path = NULL, scale = 1, width = NA, height = NA, units =c("in", "cm", "mm"), dpi = 300, limitsize = TRUE, ...)##方法二 p <- ggplot(...) + ...

scxyz的博客 2万+
上一篇: 如何用ILRuntime 3.0实现零停机热更?Unity游戏开发必知的4个核心技术点
下一篇: 揭秘Dify API限流机制:如何用Redis实现毫秒级响应与高并发承载
SimProceed
博客等级 码龄1年 146粉丝 2011原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值