ggplot2中的渐变填充

2023-11-25

说一下是否有以下情节。

library(ggplot2)
n <- 1169
df22 <- data.frame(x = 1:n, val = seq(0, 0.5, length.out = n), type = 1)

ggplot(df22, aes(x = x, y = val)) +
  geom_ribbon(aes(ymax = val, ymin = 0, fill = type, group = type))

我想要一个渐变填充(从蓝色到红色 - 垂直)而不是蓝色。因此从底部蓝色开始,顶部红色开始,并使用参数来控制颜色变化的平滑度)。

我找到了以下资源:https://ggplot2.tidyverse.org/reference/scale_gradient.html

不幸的是,它对我来说不起作用,因为我的数据不连续(?)。


下面的代码可以做到这一点(但是是水平的):

library(scales) # for muted
ggplot(df22, aes(x = x, y = val)) +
  geom_ribbon(aes(ymax = val, ymin = 0, group = type)) +
  geom_col(aes(fill = val)) +
  scale_fill_gradient2(position="bottom" , low = "blue", mid = muted("blue"), high = "red", 
                       midpoint = median(df22$val)) 

Ribbon-Horizontally

如果你想让它垂直,你可以使用翻转坐标coord_flip()倒挂。

ggplot(df22, aes(x = val, y = x)) +
  geom_ribbon(aes(ymax = val, ymin = 0)) +
  coord_flip() +
  geom_col(aes(fill = val)) +
  scale_fill_gradient2(position="bottom" , low = "blue", mid = muted("blue"), high = "red", 
                       midpoint = median(df22$val)) 

Ribbon-Vertically

或者,如果您希望它是水平的并具有垂直渐变(如您所要求的),您可能需要通过处理数据并使用geom_segment()代替geom_ribbon(),如下所示:

vals <- lapply(df22$val, function(y) seq(0, y, by = 0.001))
y <- unlist(vals)
mid <- rep(df22$x, lengths(vals))
d2 <- data.frame(x = mid - 1, xend = mid + 1, y = y, yend = y)

ggplot(data = d2, aes(x = x, xend = xend, y = y, yend = yend, color = y)) +
  geom_segment(size = 1) +
  scale_color_gradient2(low = "blue", mid = muted("blue"), high = "red", midpoint = median(d2$y)) 

这将为您提供以下信息:

enter image description here

希望您觉得它有帮助。

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

ggplot2中的渐变填充 的相关文章

随机推荐

  • CVXPY 中的初始猜测/热启动:给出解决方案的提示

    在这段代码中 import cvxpy as cvx Examples linear programming Create two scalar optimization variables x cvx Variable y cvx Var
  • VBA Excel 错误处理 - 特别是在函数中 - 专业 Excel 开发风格

    我拿到了 Rob Bovey 写的 Professional Excel Development 一书 它让我大开眼界 我正在通过错误处理重新调整我的代码 然而 还有很多我不明白的地方 我特别需要知道如何在函数中正确使用它 我使用 Bove
  • 将 hashtable.Keys 转换为 List 或其他 IEnumerable

    我知道 我还有其他选择 例如我可以维护一个单独的密钥列表 请不要建议其他选择 我只是想知道我能否成功 请不要问我要解决什么问题或类似的问题 这是一道纯粹 简单的CS题 我想知道是否有人知道如何从Hashtable并将它们扔进List
  • 在 R 中按名称模式选择列表元素

    我有一个像这样的清单 places lt list cities 1 c Madrid Valencia Barcelona countries 1 c Espa a Portugal Francia cities 2 c Alicante
  • 使用 C++ 和 Cocoa 代替 Objective-C?

    我想编写使用 C 和 Cocoa 框架的应用程序 因为 Apple 不支持 Carbon 64 位 C 在 Linux 和 Windows 上的实现似乎相当普通 但在 Mac OS X 上似乎需要额外的 Apple 特定代码片段 如 Obj
  • 理解三维数组

    我正在尝试了解三维数组 我知道它们是二维数组的数组 但是我正在读的书说了一些让我困惑的事情 在我正在阅读的书的练习中 它要求我为全彩图像创建一个三维数组 它给出了一个小例子 如果我们决定选择三维数组 则数组的声明方式如下 int color
  • 是否可以将 AutoLayout 与 UITableView 的 tableHeaderView 一起使用? [复制]

    这个问题在这里已经有答案了 自从我发现AutoLayout我到处都使用它 现在我尝试将它与tableHeaderView 我制造了一个subclass of UIView添加了我想要的所有内容 标签等 及其约束 然后我添加了这个Custom
  • 服务器端事件 (SSE) 未到达客户端

    我正在使用 MEAN 并尝试从服务器端接收事件 为此 我使用 EventSource 但它不起作用 我看到连接是如何打开的 但我没有从服务器收到任何消息 我可以在节点控制台中看到消息是如何发送的 但在客户端没有任何内容 浏览器控制台 我有点
  • 保存混乱的 .jsx 文件时采用更漂亮的格式

    I have format on save启用后 它在 js 文件中工作正常 但是当我尝试将代码保存在 jsx 文件中时 一切都会变得混乱 如何配置我的 prettier 以避免此问题而不禁用format on save 如果您使用的是 V
  • 自动映射器异常:“缺少类型映射配置或不支持的映射。”

    我尝试在 ASP NET MVC 5 应用程序中使用 Ninject 该应用程序使用 AutoMapper 将模型映射到视图模型 反之亦然 不幸的是 我收到一条错误消息 指出缺少类型映射配置 我创建了一个 Ninject 依赖解析器 nam
  • 如何以编程方式设置 dp 中的 EditText 上边距?

    在我的 Android 应用程序中 我想更改 editText 的 topMargin 问题是我想改变它 dp 明智而不是像素明智 我只想更改 topMaring 让另一个保持原样 不将它们设置为零 以编程方式我只能在 int 中设置边距
  • 提升无锁 spsc_queue 缓存内存访问

    我需要非常关注当前多线程项目中的速度 延迟 我试图更好地理解缓存访问 我不清楚无锁队列 例如 boost lockfree spsc queue 如何在缓存级别访问 使用内存 我见过使用队列 其中需要由消费者核心操作的大对象的指针被推入队列
  • 有没有办法使用“请求”通过 python 调用 Azure Devops?

    所以 从我所看到的大多数sources 他们说如果您尝试让 python 程序调用 azure devops api 调用 它会使用 python import 语句 例如 from azure devops connection impo
  • 如何使用android PhoneGap上传文件?

    我使用 Android PhoneGap 创建了应用程序 我想上传文件 即 当我单击上传按钮时 文件选择对话框将打开 然后我选择文件 然后单击该对话框中的打开按钮 我在phonegap API中使用文件传输 但输出不是这样的 如何修改pho
  • 如何在 Silverlight 上显示 tiff 文件?

    如何在 Silverlight 应用程序上显示 tiff 文件 我可以显示除 tiff 之外的任何图像格式 有人可以帮助我吗 谢谢 我成功地在 Silverlight 中显示 TIFF 免费移植很容易LibTiff NET库到 Silver
  • SQL Server - 遇到 0 时重置的累积总和

    我想对列进行累积和 但每当遇到 0 时都会重置聚合值 这是我尝试做的一个例子 该数据集 pk price 1 10 2 15 3 0 4 10 5 5 给出这个 pk price 1 10 2 25 3 0 4 10 5 15 在 SQL
  • Sublime Text 控制台不显示带重音符号的行

    在 Sublime Text 2 和 3 中 控制台输出不显示带有重音符号的行 我在用着Tools gt Build在 Windows 中的 vanilla Sublime 中 使用自动构建系统来执行它 有什么解决办法吗 将文档中标准系统输
  • 如何使用带有尾随空格的内联代码?

    当我使用 在我的 Sphinx 文档中 我收到以下警告 WARNING Inline literal start string without end string Trying samp leads to WARNING Inline i
  • 无法运行 Flask 文档中引用的示例代码

    我正在阅读 Flask 文档 并希望使用他们在 git 存储库中引用的示例 但是 教程与存储库中的代码不匹配 我无法运行它们 我收到以下错误 app cli command initdb AttributeError Flask objec
  • ggplot2中的渐变填充

    说一下是否有以下情节 library ggplot2 n lt 1169 df22 lt data frame x 1 n val seq 0 0 5 length out n type 1 ggplot df22 aes x x y va