- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像这样的 9 种颜色的列表:
colors = [
[0, 82, 246, 255],
[0, 196, 196, 255],
[0, 137, 83, 255],
[1, 233, 11, 255],
[234, 255, 31, 255],
[255, 176, 0, 255],
[247, 19, 0, 255],
[193, 0, 76, 255],
[255, 0, 255, 255]]
我想使用 matplotlib 将插值颜色的数量加倍。我使用了 LinearSegmentedColormap.from_list
但没有成功:
cm = LinearSegmentedColormap.from_list('test', np.array(colors) / 255,
N=len(colors))
colors = cm(np.linspace(0, 1, 2 * len(colors)))
colors = (colors * 255).astype('uint8')
但是我得到了相同的颜色但重复了:
array([[ 0, 82, 246, 255],
[ 0, 82, 246, 255],
[ 0, 196, 196, 255],
[ 0, 196, 196, 255],
[ 0, 137, 83, 255],
[ 0, 137, 83, 255],
[ 1, 233, 11, 255],
[ 1, 233, 11, 255],
[234, 255, 31, 255],
[234, 255, 31, 255],
[255, 176, 0, 255],
[255, 176, 0, 255],
[247, 18, 0, 255],
[247, 18, 0, 255],
[193, 0, 76, 255],
[193, 0, 76, 255],
[255, 0, 255, 255],
[255, 0, 255, 255]], dtype=uint8)
我怎样才能得到预期的行为,使用我原来的颜色,加上中间的其他颜色?
最佳答案
您的“预期”行为是不可能的:如果您有 9 种颜色,并且采用 18 个等距插值,则只有第一个和最后一个值来自您的初始集。要将您的初始集合作为列表的一部分,您需要一个倍数减一。
LinearSegmentedColormap.from_list()
的输入不能是 0-255 范围内的 rgb 值:它们必须是 0-1 范围内的浮点值。此外,N=
参数将是内部存储值的数量。如果将 N
设置为等于原始颜色数,则不会计算任何插值颜色。为了获得最大的灵 active ,您可以将 N 设置为 256。
之后,您可以再次将这些值乘以 255 以获得 0-255 范围内的 rgb 值。
from matplotlib.colors import LinearSegmentedColormap
import numpy as np
colors = [[0, 82, 246, 255],
[0, 196, 196, 255],
[0, 137, 83, 255],
[1, 233, 11, 255],
[234, 255, 31, 255],
[255, 176, 0, 255],
[247, 19, 0, 255],
[193, 0, 76, 255],
[255, 0, 255, 255]]
cm = LinearSegmentedColormap.from_list('', np.array(colors) / 255, 256)
colors_18 = (cm(np.linspace(0, 1, len(colors) * 2)) * 255).astype(np.uint8)
colors_17 = (cm(np.linspace(0, 1, len(colors) * 2 - 1)) * 255).astype(np.uint8)
colors_18:
array([[ 0, 82, 246, 255],
[ 0, 135, 222, 255],
[ 0, 189, 198, 255],
[ 0, 171, 149, 255],
[ 0, 143, 96, 255],
[ 0, 170, 57, 255],
[ 0, 216, 23, 255],
[ 69, 239, 16, 255],
[179, 249, 26, 255],
[238, 236, 23, 255],
[248, 199, 9, 255],
[253, 148, 0, 255],
[249, 74, 0, 255],
[240, 16, 8, 255],
[215, 7, 44, 255],
[196, 0, 86, 255],
[225, 0, 170, 255],
[255, 0, 255, 255]], dtype=uint8)
colors_17:
array([[ 0, 82, 246, 255],
[ 0, 139, 220, 255],
[ 0, 195, 195, 255],
[ 0, 166, 138, 255],
[ 0, 137, 82, 255],
[ 0, 185, 46, 255],
[ 3, 233, 11, 255],
[120, 244, 21, 255],
[234, 253, 30, 255],
[244, 214, 14, 255],
[254, 172, 0, 255],
[250, 94, 0, 255],
[245, 18, 1, 255],
[218, 9, 39, 255],
[194, 0, 80, 255],
[225, 0, 170, 255],
[255, 0, 255, 255]], dtype=uint8)
为了在其他应用程序中使用颜色,matplotlib 还提供了一个to_hex
函数(它不适用于数组,只能用于单个颜色):
from matplotlib.colors import to_hex
colors_18_hex = [to_hex(cm(v)) for v in np.linspace(0, 1, len(colors) * 2)]
# ['#0052f6', '#0088de', '#00bdc7', '#00ac95', '#009060', '#00ab3a', '#01d818', '#46ef11', '#b3fa1a', '#efec18', '#f9c709', '#fe9400', '#fa4a00', '#f11109', '#d7082d', '#c50057', '#e200ab', '#ff00ff']"
这是一个图表,展示了插值是如何进行的:
from matplotlib import pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
import numpy as np
colors = np.array([[0, 82, 246, 255], [0, 196, 196, 255], [0, 137, 83, 255], [1, 233, 11, 255], [234, 255, 31, 255], [255, 176, 0, 255], [247, 19, 0, 255], [193, 0, 76, 255], [255, 0, 255, 255]])
fig, axs = plt.subplots(nrows=3, figsize=(15, 5))
plt.colorbar(ScalarMappable(cmap=LinearSegmentedColormap.from_list('', colors / 255, len(colors))),
ticks=np.linspace(0, 1, len(colors)), orientation='horizontal', cax=axs[0])
axs[0].set_title("9 colors, no interpolation")
plt.colorbar(ScalarMappable(cmap=LinearSegmentedColormap.from_list('', colors / 255, 256)),
ticks=np.linspace(0, 1, len(colors) * 2 - 1), orientation='horizontal', cax=axs[1])
axs[1].set_title("positions of 17 colors")
axs[1].xaxis.grid(True, ls='--')
plt.colorbar(ScalarMappable(cmap=LinearSegmentedColormap.from_list('', colors / 255, 256)),
ticks=np.linspace(0, 1, len(colors) * 2), orientation='horizontal', cax=axs[2])
axs[2].set_title("positions of 18 colors")
axs[2].xaxis.grid(True, ls='--')
plt.tight_layout()
plt.show()
关于python - 如何在 matplotlib 中插入颜色以使其数量加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67984124/
我正在使用Mapbox开发 map 应用程序。 我正在使用的方法使用Point(Double,Double) 获取类型不匹配要求:两次发现:两次? val lat = location
我想将 System.out 消息写入另一个 OutputStream,但我仍然想要标准输出。 我找到了类似问题的答案Copy and Redirecting System.err Stream :
我正在尝试为我正在处理的排序找到所有处理器的全局最小值和最大值。我正在尝试使用 MPI_Reduceall int rank, nproc; MPI_Comm_size(MPI_COMM_WORLD,
我想知道从一种可空类型转换为另一种“兼容”可空类型的最佳方式(从更安全和简洁的意义上说)是什么。 具体来说,从十进制转换?加倍?可以使用: public double? ConvertToNullab
我的一个表的文件大小(.MYD 文件)增加了大约 100%。如果我查看数据,就会发现过去几天的每日负载正常。是什么导致文件大小增加? myisamchk 根据用户的建议,我尝试了sudo myisam
我有一个 invoices 表。每张发票都有许多 invoice_items 和 transactions(或者,如果您愿意,也可以是“付款”)。对于每张发票,我想计算已支付金额(即其交易金额的总和)
我需要一个尽可能接近 0 的值。我需要能够除以这个值,但实际上它应该为 0。 Java 是否提供了一种简单的方法来生成仅设置最低有效位的 double ?还是必须自己计算? //编辑:一些背景信息,因
由于 Math.random ()(以及大多数伪随机数生成器,AFAIK)在 [0,1) 中生成数字: function randomInRange(min, max) { return Math
这应该很容易。相信我,我已经为此研究了几个小时。我的查询: SELECT not_piece.pid, part.name AS 'Part Name', SUM(qty_left) AS 'In S
我正在尝试传递类型为 vector > 的变量到函数 F(double ** mat, int m, int n) . F 函数来自另一个库,所以我无法更改它。有人可以给我一些提示吗?谢谢。 最佳答案
我正在尝试读取一个文件,读取它包含的字节数,然后将其四舍五入到最接近的 GB,然后将文件大小加倍。但是,有没有办法读取文件,然后将所有这些东西重新放入同一个文件中? 这是我目前所拥有的,但它创建了一个
我正在尝试传递类型为 vector > 的变量到函数 F(double ** mat, int m, int n) . F 函数来自另一个库,所以我无法更改它。有人可以给我一些提示吗?谢谢。 最佳答案
我想对超大 (200+ MB) Sqlite 文件进行一些测试。我有一些相对较小的文件 (10MB),但我想测试更大的文件。 有没有什么快速的方法/工具可以通过复制表中的数据来增加这些 Sqlite
我有一个 64 位数字,写成两个 32 位未签名的整数:unsigned int[2]。 unsigned int[0] 是 MSB,unsigned int[1] 是 LSB。我如何将它转换为 do
我需要将数量的值传递给库进行评估。 boost units library在 SI 中采用双倍值,因此 boost 单位库在确保该要求方面非常有吸引力。但是,我应该如何将数量转换为双倍值?文档和示例似
如何向 ksoap2 请求添加双重属性? request.addProperty("doubleProperty", 1.0); 网络上没有明确的答案。 最佳答案 为了将 double 值作为请求参数
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 7 年前。 Improve this qu
我正在尝试从 AngularJS 用 Swing 编写的 REST API 生成 .bin 文件。以下是代码。 var options = { url: 'http://example.com/i
我对这段代码中的特定值集有疑问。 double inputs[] = {0, -546543, 99015, 6750, 825, 2725, 70475, 50950, 42200, 675
我在 ruby on rails 应用程序中尝试为密码生成盐时遇到了 SecureRandom#hex 方法。为什么它会加倍长度参数/坚持返回的字符串长度是偶数? 最佳答案 该方法生成一个 n 字
我是一名优秀的程序员,十分优秀!