展平 ggplot2 中的 alpha 通道

2024-06-26

ggplot2 的某些对象(函数)支持 alpha 通道。

http://docs.ggplot2.org/current/geom_point.html http://docs.ggplot2.org/current/geom_point.html

这是一个很好的功能,但是 pdf 和 png 文件中的透明颜色通常会带来各种麻烦。

如何使用 alpha 选项并获得扁平化的 pdf 输出文件?


我在使用 knit + ggplot 创建的大型 Latex 文档时遇到了持续的问题,该文档在我的 Mac 上完全可读,但 Windows 用户无法打开。经过多次尝试优化和扁平化 pdf,我最终将问题隔离到单个 alpha 重的图上。就我而言,从 pdf 切换到 png 输出会产生影响(尽管根据您的问题,听起来 png 可能无法解决您的问题)。

如果您使用 knit,则可以通过将全局(或特定于块的)图像输出选项 dev 设置为“png”而不是默认的“pdf”来自动创建 png 版本。根据绘图的不同,这可以显着缩小 alpha 重的 ggplot 的大小和复杂性。我将绘图文件大小减少了 10 倍,从 ~700KB 减少到 ~70KB(不过,一些更简单的绘图实际上可能会增加大小)。

代价是绘图的分辨率可能会有所损失。对于通过电子邮件分发草稿或对于某些类型的图来说,这可能没问题。如果分辨率损失太大,请考虑调整输出的 dpi(当然,这会增加文件大小,但在跨平台设置中仍然可能效果更好)。

要将全局图像输出设置为“png”,您可以使用如下代码:

    library(knitr)
    opts_chunk$set(dev="png", dpi=200)

要将输出设置为特定块内的“png”(例如,仅包含 alpha 的图),请使用dev="png"选项。下面的示例生成一个常规的、非 alpha 重图。采用针织+乳胶,include=FALSE选项将阻止自动包含 pdf 版本(我不确定这对于 RMarkdown 是否有必要)。

    <<myplot, dev="png", dpi=200, include=FALSE>> 
    library(ggplot2)
    x <- 1:1000
    y <- 2*x + rnorm(1000, 0, 100)
    df <- data.frame(x,y)  
    ggplot(df, aes(x=x, y=y)) + geom_point(alpha=.3)
    @

上面的代码将生成一个名为 myplot.png 的文件,在 Latex 中,可以使用嵌套在图形环境中的 includegraphics 命令轻松地将其包含在文档中。

    \begin{figure}[h!]
    \centering
    \scalebox{.5}{\includegraphics{myplot.png}}
    \caption{Some caption \label{fig:myplot}} 
    \end{figure}

另一个可能有用的资源是 R Bloggers 上托管的这篇博客文章:

使用knitr进行快速发布:导出图像以供共享和新闻发布 http://www.r-bloggers.com/fast-track-publishing-using-knitr-exporting-images-for-sharing-and-press-part-iii/

另请参阅绘图部分针织选项 http://yihui.name/knitr/options.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

展平 ggplot2 中的 alpha 通道 的相关文章

  • R ggplot2:可以自定义时间尺度的连续性吗?

    是否有可能有一个日期时间尺度而不将周末视为时间连续体的一部分 例如 如果我用线条几何图形绘制 2 周内的股票价格 我不想在周末绘制 2 天的平坦期 我希望周五与周一联系 我想有更好的方法 但是您始终可以只使用绘图的索引 然后将日期指定为标签
  • 如何按组计算日期之间的时间差

    我有一个包含日期 时间和位置的数据框 我想计算组内记录与上一条记录 根据日期排列 之间的分钟差异 并变异为新列 我已经弄清楚如何使用循环来完成此操作 但这仅适用于所有组 位置 而且我不确定如何按组执行此操作 fake data set fo
  • 双精度数据类型和数值数据类型之间的区别

    R编程中双精度数据类型和数值数据类型有什么区别 From stat ethz ch https stat ethz ch R manual R devel library base html double htm R 的浮点向量有两个名称
  • 随着数据帧变大,如何防止 rbind() 变得非常慢?

    我有一个只有 1 行的数据框 为此 我开始使用 rbind 添加行 df mydataframe with only one row for i in 1 20000 df lt rbind df newrow 随着我的成长 这变得非常缓慢
  • 贝叶斯网络中一个节点的条件概率修改(R代码)

    估计贝叶斯网络中的条件概率后 我问了一个节点 Inlet gas total Pressure 的概率如下 bn mle before Inlet gas total pressure 节点 Inlet gas total Pressure
  • 如何将字符串转换为日期?

    我已经搜索过 但找不到如何从格式如下的字符串转换日期 date lt 07 21 2015 09 30AM 我想用as Date 但我还没有做到 我得到的只是以下内容 as Date date format m d y hAM NA as
  • 将outer() 与多变量函数一起使用

    假设你有一个函数f lt function x y z 您将如何向一个参数传递一个常量 但让其他参数发生变化 换句话说 我想做这样的事情 output lt outer x y f x y z 2 这段代码不会评估 但是有没有办法做到这一点
  • ggplot2 黑白配色方案的建议

    我正在使用 ggplot2 生成许多结构如下的图表 有没有一种简单的方法可以制作出黑白效果很好的东西 我确实读过这个question https stackoverflow com questions 2895319 how to add
  • 使用 data.table::fwrite() 写入 .txt 文件 — is.list(x) 不为 TRUE

    我试图替换基本 R 函数write table with data table fwrite 加快写入速度 但该函数抱怨说is list x is not TRUE 我提供的输入有什么问题fwrite 期望 但是write table 默默
  • R:在 glm() 中的逻辑回归中预测 (0,1)

    我正在尝试在二进制 Logit 模型中模拟 假设 情况 我正在估计通过测试的概率 考虑到测试的难度级别 1 最简单 5 最难 并以性别为控制 数据是here http dl dropbox com u 1791181 bayesglm cs
  • FFMPEG - 将视频与透明度合并

    我正在尝试使用命令将两个视频合并在一起 两个视频都具有透明度 ffmpeg exe i person2 mov vf in scale iw 2 ih 2 fade out 300 30 alpha 1 pad 2 iw ih 左 movi
  • 将最新的 R 安装路径从注册表添加到 PATH windows 7/8/10

    嗨 我是 Windows 批处理新手 我想向打电话的同事分发一个 runMe bat 文件Rscript myRfile R处理一些数据文件 但众所周知 我的同事在不同地方安装了 R 我不能指望他们知道如何将 Rscript 添加到 PAT
  • 如何根据子字符串匹配选择 R data.table 行(类似于 SQL)

    我有一个带有字符列的 data table 并且只想选择其中包含子字符串的行 相当于SQLWHERE x LIKE substring E g gt Months data table Name month name Number 1 12
  • 如何计算两个邮政编码之间的距离?

    我有一个美国邮政编码列表 我必须计算所有邮政编码点之间的距离 它是一个 6k 邮政编码长列表 每个实体都有邮政编码 城市 州 纬度 经度 面积和人口 所以 我必须计算所有点之间的距离 即 6000C2 组合 这是我的数据示例 我已经在 SA
  • R 数据框中的重复行

    我正在尝试使用下面的代码复制数据框中的行 但是 我发现它很慢 duprow df 1 for i in 1 2000 print i df rbind df duprow 有更快的方法吗 您可以使用rep 例如对于数据框第 1 行的 5 个
  • 我们可以有更多错误(消息)吗?

    在 R 中 如果函数使用变量 有没有办法弹出错误消息 未在函数体内声明 即我希望有人标记这种类型的函数 aha lt function p return p n 看 如果某个地方碰巧有一个 n 变量 aha p 2 会给我一个 答案 因为
  • 如何改变R中数据框的形状? (将具有相同名称的列堆叠在一起)

    我正在尝试重塑 R 中的数据框 Gene ID Value Gene ID 1 Value 1 Gene ID 2 Value 2 1 A 0 A 3 A 1 2 B 5 B 6 B 5 3 C 7 C 2 C 7 4 D 8 D 9 D
  • 在 R 中,将一列值与所有其他列进行比较

    我对 R 非常陌生 我有一个问题对于这里的专家来说可能非常简单 假设我有一个表 sales 其中包含 4 个客户 ID 123 126 和 4 个产品 A B C D ID A B C D 123 0 1 1 0 124 1 1 0 0 1
  • 在 ggplot2 中隐藏单个几何图例

    我将相同的变量 颜色 映射到两个不同几何图形中的颜色 我希望它们要么出现在单独的图例中 DHJ 和 EFI 要么最好完全跳过第二个图例 对于 E F 和 I 目前 R 将两者混合在一起 并给我一个图例 其中按字母顺序列出了 DEFHIJ 所
  • R 中带有自定义字段类的参考类?

    我想在另一个引用类中使用自定义引用类 但此代码失败 nameClass lt setRefClass nameClass fields list first character last character methods list ini

随机推荐

  • 如何使用 Spring Boot 注册辅助 servlet?

    我有一个额外的 servlet 需要在我的应用程序中注册 然而 使用 Spring Boot 及其 Java 配置 我不能只在web xml file 如何添加额外的 servlet 还可以使用的是ServletRegistrationBe
  • 获取模板参数的字符串表示形式

    我希望能够在模板类中创建一个方法 该方法返回模板参数中替换的类型的名称 eg template
  • 为什么我在运行 ngserve 命令时收到以下错误消息?

    运行 ngserve 命令时 我不断收到以下错误消息 我该如何解决这个问题 您似乎不依赖于 angular core 这是一个错误 别忘了跑步npm install设置后 应该可以做到这一点
  • 对 AAssetManager_fromJava 的未定义引用

    我正在尝试使用 AAssetManager 从 Android apk 访问资源 然而 我不断得到 未定义对 AAssetManager fromJava 的引用 即使我已包含 asset manager h 和 asset manager
  • 动态创建的 Jenkins 管道脚本

    我正在使用詹金斯管道项目 在脚本中我想写parallel以动态方式阻止 因为节点数量可以改变 例如 从此 parallel node1 node stage1 stage2 node2 node stage1 stage2 像这样的事情 f
  • 如何获取文件或目录的标准化日期/时间戳。在纯批处理脚本中?

    Windows 命令行中有没有一种方法可以检索标准化文件或目录的日期 时间戳 修改 创建 访问 独立于语言环境格式 例如 ISO8601 http www iso org iso home standards iso8601 htm 我发现
  • 如何使用drive realtime api创建实时工作表

    我已经获得了 Drive realtime API 来处理文档 但我还没有找到任何工作表的参考 我还能够将工作表嵌入到网页中 但它是不可编辑的 如何嵌入协作实时工作表 实时 API 用于使用您自己的自定义文档类型创建协作项目 而不是用于编辑
  • 矩阵乘法,求解 Ax = b 求解 x

    因此 我接到了一项家庭作业 要求求解三次样条的系数 现在我清楚地了解如何在纸上以及使用 MatLab 进行数学计算 我想用 Python 解决问题 给定一个方程 Ax b 其中我知道 A 和 b 的值 我希望能够使用 Python 求解 x
  • magento 中的自动发票

    我创建了新的自定义产品类型 它扩展了 magento 中的虚拟产品 现在我想阻止在线支付的自动发票 例如 当订单包含至少一种自定义产品类型时 使用 Paypal 所有包含此类产品的订单都必须手动开具发票 我应该如何解决这个问题 最好的方法是
  • Python 中的“私有”属性

    我对 Python 比较陌生 所以我希望我没有错过一些东西 但是这里 我正在尝试编写一个Python模块 并且我想创建一个具有 私有 属性的类 该属性只能 或者可能 应该 只能通过模块内的一个或多个函数进行修改 这是为了使模块更加健壮 因为
  • 在 Dart 中,将动态转换为给定类型或返回 null 的语法好方法吗?

    我有一个dynamic x我想分配x to T s if x is T 否则分配null to s 具体来说 我想避免输入x两次 并避免创建临时的 例如 我不想写String s map key is String map key null
  • 设计没有路由与指定删除的链接中的 [GET]“/users/sign_out”匹配

    因此 我四处寻找解决此问题的方法 大多数人似乎都说了同样的话 但对解决我的问题没有多大作用 我已在链接中指定了删除方法 但路由错误表明这是一个 GET 请求 知道为什么下面的链接最终会覆盖 忽略方法声明吗 Routes devise for
  • 如何在连续循环中使用python多处理池

    我正在使用 python 多处理库来执行 selenium 脚本 我的代码如下 start and join multiple threads thread list total threads 10 no of parallel thre
  • 如何在网页中渲染 Blender 模型?

    因此 我探索了在网络应用程序中渲染搅拌机模型的多种选项 现在我将模型导出为 gltf格式 这是我的代码 App js import React Suspense from react import App css import Model
  • 如何隐藏标签栏并在屏幕上显示完整的表格视图?

    在我的应用程序的实现中 我有一个带有 5 个不同选项卡的选项卡栏控制器 通过以下代码隐藏标签栏后 void hideTabBar for UIView view in self tabController view subviews if
  • 在堆栈视图内的 Uilabel 之间创建垂直线 [重复]

    这个问题在这里已经有答案了 我想在代码中创建一个带有自定义标头的 UICollectionView 因此 我创建了 UICollectionViewCell 的子类来描述我的自定义标头 我想在标题中以水平线显示五个标签 因此 我创建了五个标
  • Drools JBOSS 规则嵌套 IF

    我是 Jboss Rule 的新手 我已阅读文档 但找不到开始为以下代码示例编写规则的方法 For each User code in the list If User code 11 If User code 17 present in
  • 手动 DAG 运行设置单个任务状态

    我有一个没有时间表的 DAG 它根据需要手动运行 它有很多任务 有时我想通过手动将任务状态更改为成功来 跳过 一些初始任务 更改手动执行的 DAG 的任务状态失败 似乎是因为解析execution date 时出现错误 是否有另一种方法可以
  • Java中的正弦波曲线拟合

    我正在使用阿帕奇共享数学 https commons apache org proper commons math index html包 我有以下正弦波 0 90 0 85 0 80 0 83 0 89 0 90 0 85 0 80 0
  • 展平 ggplot2 中的 alpha 通道

    ggplot2 的某些对象 函数 支持 alpha 通道 http docs ggplot2 org current geom point html http docs ggplot2 org current geom point html