手把手教你用Matplotlib进行数据可视化
01 导入Matplotlib
如果你安装了完整的Python Anaconda,那么你已经安装了Matplotlib,可以开始了。否则,你可能要访问官网获取安装说明。
http://matplotlib.org
就像我们用缩写np来表示NumPy一样,我们也会用一些标准的缩写来表示Matplotlib导入:
import matplotlib as mpl import matplotlib.pyplot as plt
plt是我们最常用的一个接口。
0手把2 生成一个简单的图形
言归正传,让我们创建第一个图形。
假设我们要绘制正弦函数sin(x)的一个简单线图。我们希望函数求x轴(0≤x≤10)上的所有值。我们将使用NumPy的linspace函数在x轴上创建一个线性空间,x值从0到10,共100个样本点:
import numpy as np x = np.linspace(0, 10, 100)
我们可以使用NumPy的sin函数求sin函数的所有x值,并通过调用plt的plot函数可视化结果:
pl手教t.plot(x, np.sin(x))
你亲自试过了吗?发生什么了?有什么发现吗?
问题是,这取决于你在何处运行这个脚本,你可能什么都看不到。以下是可以考虑的可能性:
1. 从.py脚本绘图
如果你正从一个脚本运行matplotlib,那么你只需要调用plt,如下所示:
plt.show()
调用后,图形就会显示出来!
2. 从IPython shell绘图
这实际上是以交互方式运行matplotlib的最便捷的方式之一。要显示绘图,你需要在启动IPython之后,调用%matplotlib魔术命令:
%matplotlib你用 Using matplotlib backend: Qt5Agg import matplotlib.pyplot as plt
然后,所有图都会自动显示出来,不必每次都调用plt.show()。
3. 从Jupyter Notebook绘图
如果你从基于浏览器的Jupyter Notebook上查看这段代码,你需要使用同样的%matplotlib魔术命令。可是,你还可以选择将图形直接嵌入notebook中,这有两种可能的结果:
&Manbsp;%matplotlib notebook将生成的交互式图嵌入notebook中。 %matplotlib inline将生成的静态图嵌入notebook中。
我们通常会选择内联选项:
%matplotlib inline
现在,让我们再试一次:
plt.plot(x, np.sin(x))
上述命令给出的输出如图2-4所示。
▲图2-4 应用内联选项生成的图
稍后,如果你想保存图表,可以直接从IPython或Jupyter Notebook的选项中保存:
plt.savefig('figurestp/02.03-sine.png')
只要保证使用所支持的文件后缀即可,例如.jpg、.png、.tif、.svg、.eps或者.pdf。
在导入matplotlib之后,运行plt.style.use(style_name),你可以更改绘图的样式。在plt.style.available中列出了所有可用的样式。例如,试试plt.style.use('fivethirtyeight')、plt.style.use('ggplot')或者plt.style.use('seaborn-dark')。为了增加乐趣,可以运行plt.xlokcd(),再尝试绘制其他内容。
03 可视化外部数据集的数据
作为本文的最后一个测试,让我们可视化一些来自外部数据集的数据,例如scikit-learn的digits数据集。
具体来说,我们将需要3个可视化工具:
用于实际数据的scikit-learn 用于数据处理的NumPy Matplotlib
首先,让我们导入所有这些可视化工具:
import numpy as np from sklearn import datasets&nbtlsp; import matplotlib.pyplot as plt %matplotlib inline
第一步是实际加载数据:
digits = datasets.load_digits()
如果我们没有记错的话,digits应该有2个不同的字段:一个是data字段,包含实际的图像数据;另一个是target字段,包含图像标签。
与其相信我们的记忆,不如让我们研究一下digits对象。这通过输入字段名称、添加句点、再按下Tab键—ibdigits.来实现。这会显示出digits对象还包含了一些其他字段,例如一个名为images的字段。images和data这2个字段似乎只是形状不同:
print(digits.data.shape) print(digits.images.shape)
输出结果:
(1797, 64) (1797, 8, 8)
在这两个例子中,第一维都对应于数据集中的图像数。但是data将所有像素排列在一个大的向量中,而images则保留了每个图像的8×8空间排进行列。
因此,如果我们想绘制单张图像,images字段可能更合适。首先,使用NumPy的数组切割,从数据集中抓取一张图像:
img = digits.images[0, :, :]
这里,我们说想要抓取长为1797项的数组中的第一行,以及所有对应的8×8=64个像素。然后,我们可以使用plt的imshow函数绘制图像:
plt.imshow(img, cmap='gray') plt.savefig('figures/02.04-digit0.png')
上数据述命令给出的输出如图2-5所示。请注意,图像是模糊的,因为我们将该图像调整到了更大的尺寸。原始图像的大小只有8×8。
▲图2-5 生成单张图像的示例结果
此外,我们还可以使用cmap参数指定一个彩图。在默认情况下,Matplotlib使用MATLAB的默认彩图jet。可是,对于灰度图像,gray彩图更有意义。
最后,我们可以利用plt的subplot函数绘制一组数字样本。subplot函数与在MATLAB中一样,我们指定行数、列数以及当前子图的索引(从1开始)。我们将使用一个for循环遍历数据集中的前10个图像,每个图像都有自己的子图:
plt.f可视igure(figsize=(14, 4)) for image_index in range(10): # images are 0-indexed, subplots are 1-indexed subplot_index = image_index 手把;+ 1 plt.subplot(2, 5, subplot_index) plt.imshow(digits.images[image_index, :, :], cmap='gray')
生成的输出如图2-6所示。
▲图2-6 生成包含10个数字的一组子图
对于各种数据集,另一个很好的资源是本书作者迈克尔·贝耶勒的母校加州大学手教欧文分校的机器学习资源库:
http://archive.ics.uci.edu/ml/index.php
关于作者:阿迪蒂亚·夏尔马(Aditya Sharma),罗伯特·博世(Robert Bosch)公司的一名高级工程师,致力于解决真实世界的自动计算机视觉问题。曾获得罗伯特·博世公司2019年人工智能编程马拉松的首名。
维什韦什·拉维·什里马利(Vishwesh Ravi Shrimali),于2018年毕业于彼拉尼博拉理工学院(BITS Pilani)机械工程专业。此后一直在BigVision LLC从事深度学习和计算机视觉方面的工作,还参与你用了官方OpenCV课程的创建。
迈克尔·贝耶勒(Michael Beyeler),是华盛顿大学神经工程和数据科学的博士后研究员,致力于仿生视觉的计算模型研究,以为盲人植入人工视网膜(仿生眼睛),改善盲人的感知体验。他的工作属于神经科学、计算机工程、计算机视觉和机器学习的交叉领域。
本文摘编自《机器学习:使用OpenCV、Python和scikit-learn进行智能图像处理(原书第2版)》,经出版方授权发布。
(责任编辑:官方微博)
-
云计算核心技术Docker教程:Java镜像停止、启动和命名容器
您可以启动、停止和重新启动 Docker 容器。当我们停止一个容器时,它并没有被移除,而是状态变成了stopped,容器内的进程也停止了。当我们docker ps在上一个模块中运行命令时,默认输出仅显...[详细]
-
AI 视频生成领域的先锋企业爱诗科技宣布完成超过6000万美元的 B 轮融资,由阿里巴巴领投,其他投资方包括达晨财智、深创投、北京市人工智能产业投资基金等。这一融资创下国内视频生成行业的单次最大金额,...[详细]
-
云梦级5月24日云梦级消息,据新黄河报道,5月22日,中证中小投资者服务中心(下称“投服中心”)披露了一则关于《韩某等人内幕交易“长安汽车”案》信息。 投服中心称,2023年11月26日,长安汽车公告...[详细]
-
据美国科技媒体《The Information》报道,人工智能公司 OpenAI 正寻求调整其与主要投资方微软的财务协议,以期保留更多收入,用于支付其庞大的计算开销。 报道援引知情人士透露,OpenA...[详细]
-
Cherry Studio 与硅基流动深度合作,免费提供 Qwen38B 模型
近日,Cherry Studio 宣布与硅基流动(Silicon-Based Flow)展开深度合作,为用户免费提供广受欢迎的 Qwen38B 模型。这一合作进一步丰富了 Cherry Studio...[详细]
-
云安全日报210617:思科小型企业220系列交换机发现劫持用户会话漏洞,需要尽快升级
6月16日,思科发布了安全公告,思科小型企业220系列交换机发现劫持用户会话等重要漏洞,建议尽快升级。以下是漏洞详情: 漏洞详情 来源:https://tools.cisco.com/security...[详细]
-
云梦级4月7日云梦级消息,近日,云鲸联合创始人吴一昊(Hower)被传即将从公司离职。有媒体向吴一昊本人求证,对方证实云梦级消息属实,并表示,近期他将卸任管理职务、并准备创业,但仍保留云鲸首席战略顾问...[详细]
-
新浪科技讯 北京时间8月14日凌晨消息,据报道,美国一群参议员今日致信亚马逊新任CEO安迪·贾西(Andy Jassy),敦促亚马逊提供更多有关如何扫描和存储顾客掌纹的信息。 去年,亚马逊推出了新的生...[详细]
-
云梦级2月11日云梦级消息,据中国新闻周刊报道,记者发现,因晒妻子生产过程视频被质疑的千万粉丝博主“保罗在美国”已被平台禁言,其账号主页显示,该用户因违反相关法律法规和政策,已被禁言。 据此前报道,今...[详细]
-
新浪科技讯 北京时间5月27日晚间消息,据报道,多位知情人士今日称,继加州、纽约州和华盛顿州之后,马萨诸塞州和宾夕法尼亚州的总检察长也加入到对亚马逊的反垄断调查中。 如今,越来越多州的调查,包括华盛顿...[详细]
- https://www.openstreetmap.org/search?query=黑帽seo寄生虫程序【tg:seogoogle987】,hr2
- https://www.wattpad.com/search/黑帽seo寄生虫程序【tg:seogoogle987】pD0
- https://www.tcv.org.uk/search/黑帽seo寄生虫程序【tg:seogoogle987】,1sC
- https://www.vet-direct.com/search?cat=72&term=黑帽seo寄生虫程序【tg:seogoogle987】,QJZ
- https://www.revere.org/search?action=SEARCH&q=黑帽seo寄生虫程序【tg:seogoogle987】,G3U
- https://www.scq.ubc.ca/?page=2&s=黑帽seo寄生虫程序【tg:seogoogle987】,RDU
- https://www.yli.ro/catalogsearch/result/?q=黑帽seo寄生虫程序【tg:seogoogle987】,OFj
- https://www.writingforward.com/?action=SEARCH&s=黑帽seo寄生虫程序【tg:seogoogle987】,jSh
- https://www.whirlpool.com.hk/chinese/catalogsearch/result?cat=30&q=黑帽seo寄生虫程序【tg:seogoogle987】,9o7
- https://www.mygrandma.com/Items.aspx?search=黑帽seo寄生虫程序【tg:seogoogle987】,qic

标签: 小鹏汽车 飞行汽车 小鹏汇天 IPO
云计算开发:Python3-List remove()方法详解
标签: YouTube 谷歌 尼尔・莫汉 自愿离职计划
标签: 滴滴
标签: 白冰 Manus 追觅 小红书
