解决警告:*c* argument looks like a single numeric RGB or RGBA sequence, which should be avoi(图文并茂详细版!!!)

Posted 温柔且上进c

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决警告:*c* argument looks like a single numeric RGB or RGBA sequence, which should be avoi(图文并茂详细版!!!)相关的知识,希望对你有一定的参考价值。

报错信息

       •当我们在使用matplotlib绘图,自定义颜色时,可能会出现以下报错!!

*c* argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have 
precedence in case its length matches with *x* & *y*.  Please use the *color* keyword-argument or provide a 2-D 
array with a single row if you intend to specify the same RGB or RGBA value for all points.

在这里插入图片描述

问题分析

       •问题描述:c这个参数应该是一个RGB或RGBA序列,当你仅仅需要使用一个颜色时,应该使用颜色单词来代替,当你真的想使用光谱来自定义颜色,请你使用二维数组来确定颜色!!!
       •我们上述代码中自定义的颜色是一个元组,不符合规定的二维数组,需将其转换二维数组!!!

解决方法

import matplotlib.pyplot as plt  # 二维图像
import numpy as np

# 自定义颜色
color1 = plt.cm.tab10(5.2)

# 复制简单的散列图 变量x1与x2的关系
# 定义数据
x1 = np.random.rand(10)  # 取出十个符合正态分布的随机数
x2 = x1 + x1 ** 2 - 10

# 确定画布
plt.figure(figsize=(8, 4))

# 绘图
plt.scatter(x1, x2,  # 横坐标 纵坐标
            s=20,  # 数据点的尺寸大小
            c=color1, # 自定义颜色
            label='Positive')  # 这个所绘制图的名称(图例)

# 装饰图形
plt.legend()  # 显示图例

plt.show()  # 显示图形

       •就是将我们的自定颜色的元组转换成一维数组再进行增维,即可解决此警告!!!
       •上述的color1是一个元组!!!
在这里插入图片描述
       •将其转换为数组(np是模块numpy自定义的别名!!!)

np.array(color1)

在这里插入图片描述
       •有一个方括号即为一维数组!!

       •使用reshape进行增维,使用reshape(1,-1)进行行上增维!!!

np.array(color1).reshape(1,-1)

在这里插入图片描述
       •有两个方括号即为二维数组!!

注意

       •reshape(1,-1) 行上维度增加一
在这里插入图片描述
       •reshape(-1,1) 列上维度增加一
在这里插入图片描述

总结

       •就是将代码中的c=color1替换成c=np.array(color1).reshape(1,-1)即可完美解决如上的警告!!!

完整代码

import matplotlib.pyplot as plt  # 二维图像
import numpy as np

# 自定义颜色
color1 = plt.cm.tab10(5.2)

# 复制简单的散列图 变量x1与x2的关系
# 定义数据
x1 = np.random.rand(10)  # 取出十个符合正态分布的随机数
x2 = x1 + x1 ** 2 - 10

# 确定画布
plt.figure(figsize=(8, 4))

# 绘图
plt.scatter(x1, x2,  # 横坐标 纵坐标
            s=20,  # 数据点的尺寸大小
            c=np.array(color1).reshape(1,-1),  # 增维 编程一行四列 数据点的颜色
            label='Positive')  # 这个所绘制图的名称(图例)

# 装饰图形
plt.legend()  # 显示图例

plt.show()  # 显示图形

在这里插入图片描述

以上是关于解决警告:*c* argument looks like a single numeric RGB or RGBA sequence, which should be avoi(图文并茂详细版!!!)的主要内容,如果未能解决你的问题,请参考以下文章

日志大量警告warning: unable to look up public/pickup: No such file or directory!

英语looking at ideas怎么翻译?

关于数据丢失的警告 c++/c

微信小程序v-for循环时,设置wx:key报错does not look like a valid key name?

微信小程序v-for循环时,设置wx:key报错does not look like a valid key name?

微信小程序v-for循环时,设置wx:key报错does not look like a valid key name?