解决警告:*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()  # 显示图形

在这里插入图片描述

  • 20
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值