可视化之路(十二)Collection类详解

可视化之路(十二)Collection类详解

一.简介

在这里插入图片描述

Collection类绘制共享大多数属性的大型对象集合的类,是所有集合类的基类。他自己不能单独使用,必须进行子类化之后才能使用。

二.类定义

def __init__(self,
                 edgecolors=None,
                 facecolors=None,
                 linewidths=None,
                 linestyles='solid',
                 capstyle=None,
                 joinstyle=None,
                 antialiaseds=None,
                 offsets=None,
                 transOffset=None,
                 norm=None,  # optional for ScalarMappable
                 cmap=None,  # ditto
                 pickradius=5.0,
                 hatch=None,
                 urls=None,
                 offset_position='screen',
                 zorder=1,
                 **kwargs
                 ):

参数1:edgecolors:指定色块边缘颜色。

参数2:facecolors:指定色块颜色。

参数3:linewidths:指定色块线宽。

参数4:linestyles:指定色块线型。

参数5:capstyle:指定线画笔样式。

参数6:joinstyle:指定连接样式。

参数7:antialiaseds:布尔型,指定是否应对集合中的每个对象进行抗锯齿绘制。

参数8:offset:指定色块偏移量。

参数9:norm:指定是否归一化.

参数10:cmap:指定colormap。

参数11:pickradius:指定用于密闭性测试的拾取半径。

参数12:hatch:指定内部填充图案。

参数13:urls:未知?

参数14:offset_position:指定偏移量视为数据坐标而不是屏幕坐标。

参数15:zoeder:指定色块图层。

参数16:**kwargs:接收的关键字参数传递给Artist基类。

对Collection及其子类的实例,使用get_属性名称()获取当前实例的对应属性值。

设置属性的方法一共有两种:

  • set(**kwarg)
  • set_属性名称(属性值)

三.例子

在实例绘图中统一使用不区分大小写的 X11/CSS4 颜色名称。使用散点图使用scatter函数,他的返回值是PathCollection正好是Collection类的子类,接下来以散点图进行演示。

3.1edgecolors

edgecolors用来指定色块的边缘颜色,如果指定为None则使用matplotlib.rcParams内定的数值。

可以使用的颜色见下链接:

matplotlib颜色介绍

原图中只制定了linewidth参数和facecolor参数,所以标记点只会有一种颜色。

import matplotlib.pyplot as plt

import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置支持中文
plt.rcParams['axes.unicode_minus'] = False  # 设置-号
plt.style.use('ggplot')

x = np.arange(15)
y = 2 * x + np.random.randint(-1, 5, size=15)

collection = plt.scatter(x, y, linewidths=4, s=8*(x+y), facecolor="blue", label='示例散点图')

plt.legend()
plt.title("原图", fontsize=25, fontweight="bold")
plt.show()

原图效果:

在这里插入图片描述

添加一条语句collection.set_edgecolor('mediumseagreen')指定边缘颜色,效果如下:

在这里插入图片描述

linewidth参数和edgecolor参数二者要相互配合才能达到真正的效果。单独设置其中的一个并不能达到设置标记点边缘颜色的效果。

可以传递一整个颜色序列从而设置多个点的边缘颜色,序列长度不必和点的数量相同,默认循环使用序列中的颜色,效果如下:

在这里插入图片描述

3.2facecolors

facecolors用来指定色块的表面颜色,如果指定为None则使用matplotlib.rcParams内定的数值。颜色详情见3.1。

使用set()方法设置新的表面颜色

collection.set(facecolor="gray")

在这里插入图片描述

同edgecolor参数一样,可以设置循环颜色,效果如下:

在这里插入图片描述

3.3linewidths

linewidths参数指定边缘线宽,可以指定一个标量或者一个标量序列。使用set_linewidth方法进行设置,此处除了普遍的两种设置方法还可以使用简化语句set_lw方法进行设置。

新的原图如下:

在这里插入图片描述

import matplotlib.pyplot as plt

import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置支持中文
plt.rcParams['axes.unicode_minus'] = False  # 设置-号
plt.style.use('ggplot')

x = np.arange(15)
y = 2 * x + np.random.randint(-1, 5, size=15)

collection = plt.scatter(x, y, linewidths=4, s=8*(x+y), edgecolors="cyan", facecolor="blue", label='示例散点图')
collection.set_lw(8)

plt.legend()
plt.title("原图", fontsize=25, fontweight="bold")
plt.show()

效果如下:

在这里插入图片描述

3.4capstyle

capstyle参数用来设置线的两端样式,详情见

capstyle参数详解

3.5joinstyle

joinstyle参数用来设置两条线段的连接方式,详情见

joinstyle参数详解

3.6antialiaseds

antialiaseds参数用来设置是否使用抗锯齿进行绘制。该参数的调整视觉效果并不明显。

3.7cmap

cmap用来指定颜色映射表。这个地方需要注意,如果想要使用cmap映射表,必须指定映射方式,使用映射表的方式优先级高于直接指定具体表面颜色,边缘颜色不会收到影响。

import matplotlib.pyplot as plt

import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置支持中文
plt.rcParams['axes.unicode_minus'] = False  # 设置-号
plt.style.use('ggplot')

x = np.arange(15)
y = 2 * x + np.random.randint(-1, 5, size=15)

collection = plt.scatter(x, y, linewidths=4, s=8*(x+y), c=2*(x+y), edgecolors="cyan", facecolor="blue", label='示例散点图')
collection.set_cmap("PuOr")

plt.legend()
plt.title("原图", fontsize=25, fontweight="bold")
plt.show()

效果如下:

在这里插入图片描述

3.8hatch

hatch参数用来设置填充图案,可选:

/ - diagonal hatching

\ - back diagonal

| - vertical

+ - crossed

- - horizontal
x - crossed diagonal

o - small circle

O - large circle

. - dots

* - stars、

注意几点,第一字母可以组合,如果相同的字母重复,则会增加该图案的阴影密度。第二阴影与其他属性不同,只能为整个集合指定,而不能为每个成员单独指定。

使用o来添加阴影,效果如下:

在这里插入图片描述

使用ooo来增加阴影密度,效果如下:

在这里插入图片描述

使用ox*来进行阴影的组合,效果如下:

在这里插入图片描述

阴影的颜色和edgecolor设置的颜色相同,更改边缘线条颜色也能影响阴影颜色,效果如下:
在这里插入图片描述

3.9linestyles

linestyles参数用来设置边缘线条样式,详见下链接:

linestyle参数详解

将边缘线条样式改为虚线,效果如下:

在这里插入图片描述

3.10alpha

alpha参数常用来设置绘制对象的透明度,0-1之间的数值。效果如下:

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猪猪家的大猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值