Python-Matplotlib可视化(3),最新手淘Python高级面试题及答案

本文介绍了如何在Matplotlib中使用填充样式填充图形,以及控制bar和scatter图的标记样式,包括预定义标记、自定义路径。还讨论了标记大小的调整和创建自定义标记的方法。
摘要由CSDN通过智能技术生成

控制线宽

控制填充样式


matplotlib提供了填充图案用于填充平面。这些填充图案,对于仅包含黑白两色的图形中具有重要作用。

import numpy as np

import matplotlib.pyplot as plt

n = 10

a = np.random.random(n)

b = np.random.random(n)

x = np.arange(n)

plt.bar(x, a, color=‘w’, hatch=‘x’, edgecolor=‘black’)

plt.bar(x, a+b, bottom=a, color=‘w’, edgecolor=‘black’, hatch=‘/’)

plt.show()

控制填充样式

具有填充呈现性的函数(如pyplot.bar())接受可选参数hatch控制填充样式,此参数的可选值包括:"/", "\", "|", "-", "+", "x", "o", "O","."和"*",每个值对应于不同的填充图案;edgecolor参数可用于控制图案填充的颜色。

控制标记样式


《详解常见统计图的绘制》中,我们已经了解了如何如何绘制曲线,并明白了曲线是由点之间的连线构成的;此外,散点图表示数据集中的每个点。而matplotlib提供了多种形状,可以用其他类型的标记替换点的样式。

标记的指定方式包括以下几种:

  1. 预定义标记:预定义的形状,表示为[0, 8]范围内的整数或某些预定义的字符串。

  2. 顶点列表:值对列表,用作形状路径的坐标。

  3. 正多边形:表示N边正多边形的三元组(N, 0, angle),其中angle为旋转角度。

  4. 星形多边形:它表示为三元组(N, 1, angle),代表N边正星形,其中angle为旋转角度。

import numpy as np

import matplotlib.pyplot as plt

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

a += np.array((-1, -1))

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

b += np.array((1, 1))

plt.scatter(a[:,0], a[:,1], color = ‘m’, marker = ‘x’)

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

plt.show()

控制标记样式使用marker参数,可以为每个数据集合集合指定不同的标记。

我们已经在中学习了如何在散点图中为每个点定义不同的颜色,如果我们需要为每个点定义不同样式该怎么办呢?问题在于,与color参数不同,marker参数不接受标记样式列表作为输入。因此,我们不能实现plt.scatter()的单次调来显示具有不同标记的多个点集。解决方案是,将每种类型的数据点分隔置不同集合中,并为每个集合单独调用pyplot.scatter()调用:

import numpy as np

import matplotlib.pyplot as plt

label_list = (

b’Iris-setosa’,

b’Iris-versicolor’,

b’Iris-virginica’,

)

colors = [‘c’,‘y’,‘m’]

def read_label(label):

return label_list.index(label)

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

marker_set = (‘^’, ‘x’, ‘.’)

for i, marker in enumerate(marker_set):

data_subset = np.asarray([x for x in data if x[4] == i])

plt.scatter(data_subset[:,0], data_subset[:,1], color = colors[i], marker = marker)

plt.show()

控制标记样式对于pyplot.plot(),也可以使用相同的标记参数访问标记样式。当数据点密集时,每个点都使用标记进行显示将会导致图片混乱,因此matplotlib提供了markevery参数,允许每隔N个点显示一个标记:

import numpy as np

import matplotlib.pyplot as plt

x = np.linspace(-6, 6, 1024)

y_1 = np.sinc(x)

y_2 = np.sinc(x) + 1

plt.plot(x, y_1, marker = ‘x’, color = ‘.75’)

plt.plot(x, y_2, marker = ‘o’, color = ‘k’, markevery = 64)

plt.show()

控制标记样式

控制标记大小


标记的大小可选参数s进行控制:

import numpy as np

import matplotlib.pyplot as plt

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

a += np.array((-1, -1))

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

b += np.array((1, 1))

plt.scatter(a[:,0], a[:,1], c = ‘m’, s = 100.)

plt.scatter(b[:,0], b[:,1], c = ‘c’, s = 25.)

plt.show()

控制标记大小Tips:标记的大小由plt.scatter()的参数s设置,但应注意它设置的是标记的表面积倍率而非半径。

plt.scatter()函数还可以接受列表作为s参数的输入,其表示每个点对应一个大小:

import numpy as np

import matplotlib.pyplot as plt

m = np.random.standard_normal((1000, 2))

r_list = np.sum(m ** 2, axis = 1)

plt.scatter(m[:, 0], m[:, 1], c = ‘w’, edgecolor=‘c’, marker = ‘o’, s = 32. * r_list)

plt.show()

控制标记大小Tips:plt.plot()函数允许在markersize(或简写为ms)参数的帮助下更改标记的大小,但是此参数不接受列表作为输入。

创建自定义标记


虽然matplotlib提供了多种标记形状。但是在某些情况下我们可能仍然找不到适合具体需求的形状。例如,我们可能希望使用公司徽标等作为形状。

在matplotlib中,将形状描述为一条路径——一系列点的连接。因此,如果要定义我们自己的标记形状,必须提供一系列的点:

import numpy as np

import matplotlib.path as mpath

from matplotlib import pyplot as plt

shape_description = [

( 1., 2., mpath.Path.MOVETO),

( 1., 1., mpath.Path.LINETO),

( 2., 1., mpath.Path.LINETO),

( 2., -1., mpath.Path.LINETO),

( 1., -1., mpath.Path.LINETO),

( 1., -2., mpath.Path.LINETO),

(-1., -2., mpath.Path.LINETO),

(-1., -1., mpath.Path.LINETO),

(-2., -1., mpath.Path.LINETO),

(-2., 1., mpath.Path.LINETO),

(-1., 1., mpath.Path.LINETO),

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
img

ython工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-FhXVbrdH-1711060956207)]

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值