热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

参数'c'和'cmap'在matplotlib散点图中的表现如何?

如何解决《参数'c'和'cmap'在matplotlib散点图中的表现如何?》经验,为你挑选了1个好方法。

对于pyplot.scatter(x,y,s,c ....)函数,

matplotlib文档指出:

c:颜色,序列或颜色序列,可选,默认值:'b'标记颜色.可能的值:

单色格式字符串.一系列长度为n的颜色规格.使用cmap和norm映射到颜色的n个数字序列.一个二维数组,其中行是RGB或RGBA.请注意,c不应该是单个数字RGB或RGBA序列,因为它与要进行颜色映射的值数组无法区分.如果要为所有点指定相同的RGB或RGBA值,请使用具有单行的二维数组.

但是我不明白我如何根据自己的意愿改变数据点的颜色.

我有这段代码:

import matplotlib.pyplot as plt
import numpy as np
import sklearn
import sklearn.datasets
import sklearn.linear_model
import matplotlib


%matplotlib inline
matplotlib.rcParams['figure.figsize'] = (13.0, 9.0)

# Generate a dataset and plot it
np.random.seed(0)
X, y = sklearn.datasets.make_moons(200, noise=0.55)
print(y)
plt.scatter(X[:,0], X[:,1], c=y)#, cmap=plt.cm.Spectral)

输出图

如果我愿意,我怎样才能改变颜色以设想黑色和绿色数据点?或者是其他东西 ?另外请解释一下cmap究竟是做什么的.

为什么每次使用plt.cm.Spectral时我的阴影都是洋红色和蓝色?



1> ImportanceOf..:

关于如何着色散点的基本上有两种选择.

1.外部映射

可在外部映射值到颜色,并提供这些颜色的列表/阵列到scatterc参数.

z = np.array([1,0,1,0,1])
colors = np.array(["black", "green"])
plt.scatter(x,y, c=colors[z])

2.内部映射

除了显式颜色外,还可以提供值列表/数组,这些值应根据规范化和色彩映射映射到颜色.

colormap是一个可调用该取之间浮动值0.1.作为输入,并返回一个RGB色彩.

规范化是一种可调用的,它根据一些先前设置的限制将任意数字作为输入并输出另一个数字.的通常情况下Normalize将提供之间值的线性映射vmin,并vmax在范围之间0.1..

从某些数据中获取颜色的自然方法是将两者联系起来,

cmap = plt.cm.Spectral
norm = plt.Normalize(vmin=4, vmax=5)
z = np.array([4,4,5,4,5])
plt.scatter(x,y, c = cmap(norm(z)))

这里的值40通过归一化映射到,并且5映射到的值1,使得色彩图提供两种最外面的颜色.

scatter如果提供了数值数组,则此过程在内部发生c.

A scatter创建一个PathCollection子类ScalarMappable.A ScalarMappable由颜色映射,规范化和值数组组成.因此,上述内容是通过

plt.scatter(x,y, c=z, norm=norm, cmap=cmap)

如果要将最小和最大数据用作规范化的限制,则可以保留该参数.

plt.scatter(x,y, c=z, cmap=cmap)

这就是问题中的输出始终是紫色和黄色点的原因,与提供的值无关c.

回到映射数组01黑色和绿色的要求, 您现在可以查看matplotlib提供的色彩映射,并查找包含黑色和绿色的色彩映射.例如nipy_spectral色彩图

在此输入图像描述

黑色位于色彩图的开头,绿色位于中间的某个位置,比如说0.5.因此,需要将其设置vmin为0,并且vmax使得vmax*0.5 = 1(1将值映射为绿色),即vmax = 1./0.5 == 2.

import matplotlib.pyplot as plt
import numpy as np
x,y = np.random.rand(2,6)
z = np.array([0,0,1,1,0,1])

plt.scatter(x,y, c = z, 
            norm = plt.Normalize(vmin=0, vmax=2),
            cmap = "nipy_spectral")

plt.show()

在此输入图像描述

由于可能并不总是存在具有所需颜色的色彩图,并且因为从现有色彩图获得色彩位置可能不是直接的,所以替代方案是专门为所需目的创建新的色彩图.

在这里,我们可以简单地创建一个黑色和绿色两种颜色的色彩映射.

matplotlib.colors.ListedColormap(["black", "green"])

我们这里不需要任何规范化,因为我们只有两个值,因此可以依赖于自动规范化.

import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import numpy as np
x,y = np.random.rand(2,6)
z = np.array([0,0,1,1,0,1])

plt.scatter(x,y, c = z, cmap = mcolors.ListedColormap(["black", "green"]))

plt.show()

在此输入图像描述


推荐阅读
  • 开发笔记:小白python机器学习之路——支持向量机
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了小白python机器学习之路——支持向量机相关的知识,希望对你有一定的参考价值。支持 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList优于LinkedList,因为Ar ... [详细]
  • 很多时候在注册一些比较重要的帐号,或者使用一些比较重要的接口的时候,需要使用到随机字符串,为了方便,我们设计这个脚本需要注意 ... [详细]
  • ☞░前往老猿Python博客https:blog.csdn.netLaoYuanPython░一、引言在写该文之前,老猿就图像的一些运算已经单独边学边发了࿰ ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • Givenasinglylinkedlist,returnarandomnode'svaluefromthelinkedlist.Eachnodemusthavethe s ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 今天就跟大家聊聊有关怎么在Android应用中实现一个换肤功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根 ... [详细]
author-avatar
落叶野
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有