Python-Matplotlib可视化(2)——自定义颜色绘制精美统计图(1)

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

为所有点使用相同的颜色

利用从二元高斯分布中提取的两组点y_1y_2,每一组中点的颜色相同:

import numpy as np

import matplotlib.pyplot as plt

y_1 = np.random.standard_normal((150, 2))

y_1 += np.array((-1, -1)) # Center the distrib. at <-1, -1>

y_2 = np.random.standard_normal((150, 2))

y_2 += np.array((1, 1)) # Center the distrib. at <1, 1>

plt.scatter(y_1[:,0], y_1[:,1], color = ‘c’)

plt.scatter(y_2[:,0], y_2[:,1], color = ‘b’)

plt.show()

为所有点使用相同的颜色

为每个点定义不同的颜色

我们总会遇到这样的绘图场景,需要为不同类别的点使用不同的颜色进行绘制,以观察不同类别间的差异情况。以Fisher’s iris数据集为例,其数据集中数据类似如下所示:

5.0,3.3,1.4,0.2,Iris-setosa

7.0,3.2,4.7,1.4,Iris-versicolo

数据集的每个点都存储在以逗号分隔的列表中。最后一列给出每个点的标签(标签包含三类:Iris-virginica、Iris-versicolor 和Iris-Vertosa)。在示例中,这些点的颜色将取决于它们的标签,如下所示:

import numpy as np

import matplotlib.pyplot as plt

label_set = (

b’Iris-setosa’,

b’Iris-versicolor’,

b’Iris-virginica’,

)

def read_label(label):

return label_set.index(label)

data = np.loadtxt(‘iris.data’, delimiter = ‘,’, converters = { 4 : read_label })

color_set = (‘c’, ‘y’, ‘m’)

color_list = [color_set[int(label)] for label in data[:,4]]

plt.scatter(data[:,0], data[:,1], color = color_list)

plt.show()

为每个点定义不同的颜色Tips:对于三种可能的标签,分别指定一种唯一的颜色。颜色在color_set中定义,标签在label_set中定义。label_set中的第i个标签与color_set中的第i个颜色相关联。然后我们利用它们把标签列表转换成颜色列表color_list。然后只需调用plt.scatter()一次即可显示所有点及其颜色。我们也可以通过对三个不同的类别单独调用plt.scatter()来实现,但这将需要更多的代码。另外需要注意的是:如果两点有可能有相同的坐标,但有不同的标签,显示的颜色将是后绘制点的颜色,可以使用透明颜色,用来显示重叠点。

为散点图中数据点的边使用自定义颜色

与color参数控制点的颜色一样,可以使用edgecolor参数控制数据点的边的颜色。可以为每个点的边设置相同的颜色:

import numpy as np

import matplotlib.pyplot as plt

data = np.random.standard_normal((100, 2))

plt.scatter(data[:,0], data[:,1], color = ‘1.0’, edgecolor=‘r’)

plt.show()

为散点图中数据点的边使用自定义颜色

Tips:也可以像在为每个点定义不同的颜色部分中介绍的一样为每个点的边设置不边的颜色

使用自定义颜色绘制条形图

控制绘制条形图使用的颜色与曲线图和散点图的工作原理相同,即通过可选参数color:

import numpy as np

import matplotlib.pyplot as plt

w_pop = np.array([5., 30., 45., 22.])

m_pop = np.array( [5., 25., 50., 20.])

x = np.arange(4)

plt.barh(x, w_pop, color=‘m’)

plt.barh(x, -m_pop, color=‘c’)

plt.show()

使用自定义颜色绘制条形图Tips:使用pyplot.bar()和pyplot.barh()函数自定义颜色绘制条形图的工作方式与pyplot.scatter()完全相同,只需设置可选参数color,同时也可以参数edgecolor控制条形边的颜色。

import numpy as np

import matplotlib.pyplot as plt

values = np.random.random_integers(99, size = 50)

color_set = (‘c’, ‘m’, ‘y’, ‘b’)

color_list = [color_set[(len(color_set) * val) // 100] for val in values]

plt.bar(np.arange(len(values)), values, color = color_list)

plt.show()

使用自定义颜色控制条形图中条形边的颜色

使用自定义颜色绘制饼图

自定义饼图颜色的方法类似于条形图:

import numpy as np

import matplotlib.pyplot as plt

color_set = (‘c’, ‘m’, ‘y’, ‘b’)

values = np.random.rand(6)

plt.pie(values, colors = color_set)

plt.show()

使用自定义颜色绘制饼图Tips:饼图接受使用colors参数(注意,此处是colors,而不是在plt.plot()中使用的color)的颜色列表。但是,如果颜色数少于输入值列表中的元素数,那么plt.pie()将循环使用颜色列表中的颜色。在示例中,使用包含四种颜色的列表,为包含六个值的饼图着色,因此,其中有两个颜色将使用两次。

使用自定义颜色绘制箱型图

将箱型图中线条颜色进行修改:

import numpy as np

import matplotlib.pyplot as plt

values = np.random.randn(100)

b = plt.boxplot(values)

for name, line_list in b.items():

for line in line_list:

line.set_color(‘m’)

plt.show()

使用自定义颜色绘制箱型图

使用色彩映射绘制散点图

如果要在图形中使用多种颜色,逐个定义每种颜色并不是最佳方案,色彩映射可以解决此问题。色彩映射用一个变量对应一个值(颜色)的连续函数定义颜色。matplotlib提供了几种常见的颜色映射;大多数是连续的颜色渐变。

色彩映射在matplotib.cm模块中定义,提供创建和使用色彩映射的函数,它还提供了预定义的色彩映射选择。

函数pyplot.scatter()接受color参数的值列表,当提供cmap参数时,这些值将被解释为色彩映射的索引:

import numpy as np

import matplotlib.cm as cm

import matplotlib.pyplot as plt

n = 256

angle = np.linspace(0, 8 * 2 * np.pi, n)

radius = np.linspace(.5, 1., n)

x = radius * np.cos(angle)

y = radius * np.sin(angle)

plt.scatter(x, y, c = angle, cmap = cm.hsv)

plt.show()

使用色彩映射绘制散点图

Tips:在matplotlib.cm模块中提供了大量预定义的色彩映射,其中cm.hsv包含全光谱的颜色。

使用色彩映射绘制条形图

plt.scatter()函数内置了对色彩映射的支持,其他一些绘图函数也内置支持色彩映射。但是,有些函数(如pyplot.bar())并未内置对色彩映射的支持。但是matplotlib可以从颜色映射显式生成颜色:

import numpy as np

import matplotlib.cm as cm

import matplotlib.pyplot as plt

import matplotlib.colors as col

values = np.random.random_integers(99, size = 50)

cmap = cm.ScalarMappable(col.Normalize(0, 99), cm.binary)

plt.bar(np.arange(len(values)), values, color = cmap.to_rgba(values))

plt.show()

使用色彩映射绘制条形图

Tips:首先创建色彩映射cmap,以便将[0, 99]范围内的值映射到matplotlib.cm.binary的颜色。然后,函数cmap.to_rgba将值列表转换为颜色列表。因此,尽管plt.bar并未内置色彩映射支持,但依旧可以使用并不复杂的代码实现色彩映射。

创建自定义配色方案


matplotlib使用的默认颜色考虑的主要对象是打印文档或出版物。因此,默认情况下,背景为白色,而标签、轴和其他注释则显示为黑色,在某些不同的使用环境中,我们可能需要使用的配色方案;例如,将图形背景设置为黑色,注释设置为白色。

在matplotlib中,各种对象(如轴、图形和标签)都可以单独修改。但逐个更改这些对象的颜色配置并非最佳方案。在matplotlib中,所有对象都可以利用集中式配置修改其默认颜色:

import numpy as np

import matplotlib as mpl

from matplotlib import pyplot as plt

mpl.rc(‘lines’, linewidth = 2.)

mpl.rc(‘axes’, facecolor = ‘k’, edgecolor = ‘w’)

mpl.rc(‘xtick’, color = ‘w’)

mpl.rc(‘ytick’, color = ‘w’)

mpl.rc(‘text’, color = ‘w’)

mpl.rc(‘figure’, facecolor = ‘k’, edgecolor =‘w’)

mpl.rc(‘axes’, prop_cycle = mpl.cycler(color=[(0.1, .5, .75),(0.5, .5, .75)]))

x = np.linspace(0, 7, 1024)

plt.plot(x, np.sin(x))

plt.plot(x, np.cos(x))

plt.show()

创建自定义配色方案

文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值