改变rgba颜色的色调

2024-02-21

我使用 RGBA 颜色在 matplotlib 中将一堆数据绘制为对数刻度上的散点图(以防万一介质相关)。我希望能够做的是,一旦绘制了所有内容,我想挑选出各个散点并将其色调更改为某种 RGB 颜色的色调,但保留旧的 alpha 值。我目前的做法是这样的:

oldHSV = rgb_to_hsv(oldRGBA[:3])
newHSV = rgb_to_hsv(newRGB)
oldHSV[0] = newHSV[0]
newRGBA = hsv_to_rgb(oldHSV).tolist() + [oldRGBA[3]]

即,我获取旧 RGBA 值的 RGB 部分,将其转换为 HSV,对新的预期 RGB 颜色执行相同的操作,然后替换色调,将其转回 RGB 并添加旧的 alpha 值。

由于我已经这样做了数千次,因此这可能比我在这里花费的时间要长得多。一种可能的解决方法是深入研究 RGB 和 HSV 之间的转换,并找出如何一次性完成此操作,但我希望那些知道如何处理颜色的人(我真的不知道)已经找到了简单而高效的方法方法来做到这一点。

如何将给定 RGBA 颜色 A 的色调更改为给定 RGB 颜色 B 的色调,同时保留 A 的 alpha 值?使用不同的颜色模型(例如 HSL)会简化任务吗?如果是的话,这会有帮助吗?


这是一次性完成所有更换的解决方案:

import matplotlib.colors as clr
import matplotlib.pyplot as plt
import numpy as np


N = 100000
x = 1.2 + 800.0 * np.random.rand(N)
y = 1.2 + 800.0 * np.random.rand(N)
# Generate random colors of the form (r, g, b, a) where r = 0.0
colors = np.random.rand(4 * N).reshape((N, 4))
colors[:, 0] = 0.0
area = np.pi * (5 * np.random.rand(N))**2

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
pcol = ax.scatter(x, y, s=area, c=colors)
ax.set_xscale('log')
ax.set_yscale('log')

# Save initial figure
plt.savefig("hue.jpg")

oldRGBA = pcol.get_facecolors().reshape((N, 1, 4))
oldRGB = oldRGBA[:, :, :3]
newRGB = oldRGB
newRGB[:, :, 0] = 1.0 # Set red component to 1.0
oldHSV = clr.rgb_to_hsv(oldRGB)
newHSV = clr.rgb_to_hsv(newRGB)
oldHSV[:, :, 0] = newHSV[:, :, 0]
newRGBA = np.copy(oldRGBA)
newRGBA[:, :, :3] = clr.rgb_to_hsv(oldHSV)
pcol.set_facecolors(newRGBA[:, 0, :])

# Save modified figure
plt.savefig("hue_bis.jpg")

plt.close()

正如您所看到的,此代码尝试绘制 100000 个点,实际上它在大约 2 秒内完成了这一任务。以下是产生的数字:

and :

关于你的最后两个问题:

如何将给定 RGBA 颜色 A 的色调更改为给定 RGB 颜色 B 的色调,同时保留 A 的 alpha 值?

and :

使用不同的颜色模型(例如 HSL)会简化任务吗?如果是这样,这将有所帮助

我认为你进行这种修改的方法是值得赞赏的,它避免了手工计算(参见HSL 和 HSV http://en.wikipedia.org/wiki/HSL_and_HSV)。使用不同的颜色模型是可能的,HSL 和 HSV 都允许更改色调而不影响其他参数,但这只是另一种方法,而不是更好的方法。

希望这会有所帮助。

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

改变rgba颜色的色调 的相关文章

  • 绘制长方体

    我正在尝试使用 matplotlib 绘制不同大小的长方体 这样 旋转后 长方体不会以非物理方式在视觉上重叠 立方体具有不同的颜色和围绕它们绘制的框 我读过几篇博客文章和 stackoverflow 页面引用类似的问题 但总是有细微的差别
  • 在 Matplotlib 中选择标记大小

    我正在 matplotlib 中用方形标记绘制散点图 如下所示 我想实现这样的目标 这意味着我必须调整标记大小和图形大小 比例 以使标记之间没有空白 每个索引单元还应该有一个标记 x and y都是整数 所以如果y从 60 到 100 应该
  • 代码终止后保持 matplotlib / pyplot 窗口打开

    我希望 python 绘制一个图 在不阻塞控制流的情况下显示它 并在代码退出后使图保持打开状态 这可能吗 这个以及相关的主题存在于许多其他线程中 见下文 但我无法让情节保持开放且非阻塞 例如 如果我使用pyplot ion before p
  • 将 matplotlib 绘图中的小数点更改为逗号

    我在 Debian 上使用 python 2 7 13 和 matplotlib 2 0 0 我想将 matplotlib 绘图中轴和注释上的小数点标记更改为逗号 然而解决方案发布here https stackoverflow com q
  • 更改 Common Lisp REPL 中文本的颜色

    我想控制 Common Lisp 中显示的文本的颜色 像这样的伪代码 print color red hello blue world 有什么办法可以做到这一点吗 我使用 SBCL 我的 repl 位于 emacs 内 谢谢 您可以使用AN
  • 部署应用程序时“matplotlib”没有属性“cm”

    我正在尝试部署一个使用 Dash 开发的应用程序 该应用程序使用一些 matplotlib 函数 当我在本地运行应用程序时 它运行顺利并且一切正常 但是 当我使用相同的代码部署它时 我使用heroku进行部署 安装的 matplotlib
  • 如何在 R 中为所有plot.default、plot 或lines 调用设置默认颜色

    为了简化我的日常 R 交互 我想为所有绘图设置默认颜色 例如 假设我想要用红线绘制所有绘图 例如在 gnuplot 中 到目前为止 这是我的 Rprofile 的片段 setHook packageEvent grDevices onLoa
  • 如何在 matplotlib 图中显示数据

    I m trying to make an interactive plot in the jupyter notebook but i don t know exactly how to implement it Having a dat
  • 在 Python 中绘制 Excel 中的数据

    我必须从 Excel 文件中读取和绘制数据的代码是这样的 import pandas as pd import matplotlib pyplot as plt excel file file1 xlsx file1 pd read exc
  • 是否可以忽略 Matplotlib 绘图的第一个默认颜色?

    Matplotlib plots each column of my matrix a with 4 columns by blue yellow green red Then I plot only the second third fo
  • 在 ipython 中使用 igraph 绘制顶点标签时出现问题

    我通常在 IPython 笔记本中工作 我使用以下命令在 Windows 上打开它 ipython qtconsole matplotlib inline 我目前正在使用 IPython QtConsole 3 0 0 Python 2 7
  • 旋转 3d 图形的 z 轴

    How do I rotate the z axis of a matplotlib figure so that it appears as the horizontal axis I have created the following
  • 如何将人物传奇带到前台?

    我有一系列子图 其中每个子图都有一个图例 我想在每个子图之外与相邻子图重叠 问题在于图例位于其自己的图的 顶部 但位于相邻图的下方 Legend 不将 zorder 作为参数 所以我不知道如何解决这个问题 这是我使用过的代码 import
  • 如何在 matplotlib 中第一个 x 轴的底部添加第二个 x 轴?

    我指的是已经提出的问题here https stackoverflow com questions 10514315 how to add a second x axis in matplotlib 在此示例中 用户通过将第二个轴添加到与标
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • 具有多个元素的数组的真值是二义性错误吗? Python

    from numpy import from pylab import from math import def TentMap a x if x gt 0 and x lt 0 5 return 2 a x elif x gt 0 5 a
  • 设置 jdialog 框中文本的格式

    我有一个 JOptionPane JOptionPane showMessageDialog null text 文字是一个刺 String text Hello world 我想做的是改变文本的颜色 特别是一个单词 让我们说 你好 所以我
  • 将每个数组的散点移动 delta x

    I m trying to sort out a plot which at the moment looks like this 我正在尝试找出如何针对不同的情况进行轮班dx每个数据集的值 在这种模式下 系列的最后一项保持在中心 在这种情
  • 将此 MATLAB 代码转换为 Python 时我做错了什么?

    我正在努力将生成波形的 MATLAB 代码转换为 Python 就上下文而言 这是原子力显微镜带激发响应的模拟 与代码错误无关 在 MATLAB 中从 r vec 生成的图形与我在 Python 中生成的图形不同 我是否正确地将 MATLA
  • 禁用按钮上的实际文本颜色

    VB2012 我正在创建一个按钮控件并继承自 NET 按钮 从这里夺取基地https blogs msdn microsoft com jfoscoding 2005 11 10 building a splitbutton https b

随机推荐

  • PNG 图像的页面速度 URL 很奇怪?

    我将具有 alpha 透明度的 PNG 图像上传到我的服务器 文件名为 logo png 但是 当在页面上使用该图像并且我去查看它的文件路径时 我得到 http example com i 300x300xlogo png pagespee
  • 如何使用 hooks 处理异步 firebase 调用

    我想创建一个用于将数据添加到 firestore 数据库的钩子 我不确定我是否误解了 hooks 的工作原理或 firestore 的工作原理 我对两者都是新手 警告 无法对已卸载的组件执行 React 状态更新 这是一个空操作 但它表明应
  • 算术表达式作为 c 中宏的参数

    使用宏和预处理器指令 define 我编写了以下两个代码 第一个代码传递表达式 例如a b valid pagesize a b 在第二个代码中 c a b 然后将此 c 作为参数传递给宏 valid pagesize c 第二个代码可以完
  • Android 通过后退按钮关闭应用程序

    该应用程序看起来像这样 主活动 gt 用户活动 gt 详细信息活动 活动的大致顺序 我想在DetailsActivity 行中的第三个活动 中单击后退按钮时关闭应用程序 想知道这样做是否是好的做法以及最好的方法是什么 如果我理解正确的话 即
  • Git:如何将现有的“merge”转换为“merge --squash”?

    我表演了多次merge承诺但他们应该是merge squash反而 解决冲突花了一天多的时间 所以我无法手动重新进行合并 有没有办法转换merge to merge squash 这里值得注意的是git merge and git merg
  • pandas 和 matplotlib:将两个图合并为一个图例项

    我有以下代码 from pandas import DataFrame import matplotlib pyplot as plt if name main lower bound 0 1 2 3 value 1 2 3 4 upper
  • 如何使用 span 设置 PHP echo 输出的样式

    我正在尝试设计每个回声的输出 理想情况下我想使用 span class span 对于每个回声 但我不太确定如何实现这一点 result mysql query SELECT FROM Blog while row mysql fetch
  • 如何在 Notepad++ 中自动更改 XHTML 结束标签

    如果之前有人问过这个问题 我深表歉意 但我不相信有人明确提出过这个问题 导致 stackoverflow 上出现很多混乱 我正在使用 Notepad v6 6 9 我正在寻找自动更改结束语的方法当我想 稍后 更改我的开始元素标签时 例如 如
  • Django 和项目/应用程序组织

    我刚刚开始学习 Django 对布局和组织项目和应用程序的最佳方式有点困惑 根据我的理解 项目是您的整个网站 应用程序是组成该网站的各个部分 对于第一个项目 我正在制作一个小型电子商务类型的网站 其中将包含用户 项目等 那么我应该有 用户
  • 使用 DATETIME mysql 查询日期之间的时间范围

    我有一个数据库表 其中包含如下字段 TIME Datetime Update ID 2013 11 25 05 00 14 XC3 2013 11 25 06 00 13 XC4 2013 11 25 06 00 19 XC5 2013 1
  • AngularJS 在哪里存储缓存数据

    我正在使用 AngularJS 构建一个应用程序 我需要跨会话存储一些数据 我以为 cacheFactory可能是一个选择 但是 我不知道在哪里缓存对象 http docs angularjs org api ng type 24cache
  • 如何使用 Tippy.js 在 mouseenter 上显示工具提示并在单击时隐藏

    我在用Tippy js https atomiks github io 我想在 mouseenter 上显示工具提示 但在单击时隐藏它 当您click在一个元素上 tippy并保持打开状态 直到您点击离开 tippy tippy trigg
  • 无限滚动一次加载所有项目?

    我正在使用一个名为自动浏览 https github com msjolund jquery esn autobrowse它代表一种无限滚动类型的脚本 可从 JSON 文件中提取数据 当我将脚本设置为重复 循环 这些项目几次时 它的工作原理
  • 错误:OID 未增加:SNMPv2-SMI::dod,如何增加 OID?

    我正在尝试实现具有两个不同上下文名称的 snmp 代理 我得到了一些示例程序 这是我的代理端代码 我从snmplabs com http snmplabs com 我尝试实现它 但在执行 snmpwalk 时遇到一些错误 snmpwalk
  • 在centos 6.4上安装numpy&scipy

    我在虚拟环境中工作 安装 numpy 和 scipy 时遇到问题 据我了解 在使用 scipy 之前我必须完全安装 numpy 但是我在安装 numpy 时遇到了问题 I usedpip install numpy并将 numpy 安装到我
  • 具有多个查找字段的 Rest 调用以进行反向查找

    在Django Rest框架中 有没有办法拥有多个查找字段 我知道这听起来不太好REST友好的 我有一个Company模型 我想首先通过国家 地区列出它们 然后通过 slug 字段列出它们 例如 companies
  • Restore_best_weights 问题 keras 提前停止

    我正在将 Keras 的 EarlyStopping 用于我的深度学习项目 文档here https keras io callbacks earlystopping提到了一个非常有用的恢复最佳体重的想法 但不知何故我还无法使用它 我使用的
  • 使用 lambda 表达式来避免使用“魔术字符串”来指定属性

    我正在编写一项服务来获取特定类型的对象集合输出其原始类型 字符串类型和日期时间类型 https stackoverflow com questions 3161959 in c is there a way retrieve only bu
  • C++ 使用 .o 链接和使用 .a 文件链接之间存在差异:行为不同,为什么?

    我期望 与 o 文件链接和与从 o 文件存档的 a 文件链接应该没有区别 但事实并非如此 我有2个源文件 每个都声明1个类 1个静态对象 1个函数 以及一个调用其中一个函数的main cpp cat First cpp include
  • 改变rgba颜色的色调

    我使用 RGBA 颜色在 matplotlib 中将一堆数据绘制为对数刻度上的散点图 以防万一介质相关 我希望能够做的是 一旦绘制了所有内容 我想挑选出各个散点并将其色调更改为某种 RGB 颜色的色调 但保留旧的 alpha 值 我目前的做