- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Python数据可视化之用Matplotlib绘制常用图形由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
散点图用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。 特点:判断变量之间是否存在数量关联趋势,表示离群点的分布规律.
散点图绘制:
plt.scatter(x,y) # 以默认的形状颜色绘制散点图 。
实例: 假设我们获取到了上海2020年5,10月份每天白天的最高气温(分别位于列表a、b),那么此时如何观察气温和随时间变化的某种规律.
# 绘制图形所需的数据y_5 = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,14,15,15,15,19,21,22,22,22,23]y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,15,10,11,13,12,13,6]
代码如下:
import matplotlib.pyplot as plt# 设置字体plt.rcParams["font.sans-serif"]=["SimHei"] # 替换sans_serif字体plt.rcParams["axes.unicode_minus"]=False # 解决坐标轴负数的负号显示问题plt.figure(figsize=(12,5), dpi=100)y_5 = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,14,15,15,15,19,21,22,22,22,23]y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,15,10,11,13,12,13,6]x = range(1, 32)plt.scatter(x, y_5, label="五月份")plt.scatter(x, y_10, label="十月份")# 增加标题,坐标描述plt.xlabel("时间")plt.ylabel("日期")plt.title("气温和随时间变化的某种规律")# 添加图形注释plt.legend(loc="best")plt.show()
上图虽然绘制出5、10月气温随日期的变化,但两者混在一起,不便于观察,现通过修改x数据,将10月的坐标点集体往坐标轴右侧移动,改进的代码如下:
import matplotlib.pyplot as plt# 设置字体plt.rcParams["font.sans-serif"]=["SimHei"] # 替换sans_serif字体plt.rcParams["axes.unicode_minus"]=False # 解决坐标轴负数的负号显示问题plt.figure(figsize=(12,5), dpi=100)y_5 = [11,17,16,11,12,11,12,13,10,14,8,13,12,15,14,17,18,21,16,17,30,14,15,15,15,19,21,22,22,22,23]y_10 = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,15,10,11,13,12,13,6]x_5 = range(1, 32)x_10 = range(33, 64)plt.scatter(x_5, y_5, label="五月份")plt.scatter(x_10, y_10, label="十月份")# 刻度显示x_t = list(x_4)+list(x_10)x_l = ["5月{}号".format(i) for i in x_4]x_l += ["10月{}号".format(i-31) for i in x_10]plt.xticks(x_t[::3], x_l[::3], rotation=45)# 添加图形注释plt.legend(loc="best")plt.show()
柱状图是用宽度相同的条形的高度或长短来表示数据多少的图形。柱状图可以横置或纵置,纵置时也称为柱形图.
特点:
能够直观反映出各个数据的大小; 易于比较数据之间的差别.
柱状图绘制:
plt.bar(x, width, align=‘center", **kwargs) 。
Parameters: x : sequence of scalars.width : scalar or array-like, optional, 柱状图的宽度align: {‘center", ‘edge"}, optional, default: ‘center"Alignment of the bars to the x coordinates:‘center": Center the base on the x positions.‘edge": Align the left edges of the bars with the x positions.每个柱状图的位置对齐方式, 默认柱状图的中心与x坐标中心对齐**kwargs:color: 选择柱状图的颜色
水平条形图绘制 。
plt.barh(y, width) # 绘制以y为y轴位置的水平条形图 。
实例:假设我们获取到了2019年内地电影票房前20的电影(列表a)和电影票房数据(列表b),绘制柱状图直观地展示数据,代码如下:
import matplotlib.pyplot as plt# 设置字体plt.rcParams["font.sans-serif"]=["SimHei"] # 替换sans_serif字体plt.rcParams["axes.unicode_minus"]=False # 解决坐标轴负数的负号显示问题plt.figure(figsize=(15,10),dpi=100)# 准备电影的名字以及电影的票房数据movie_name = ["流浪地球","复仇者联盟4:终局之战","哪吒之魔童降世","疯狂的外星人", "飞驰人生","蜘蛛侠:英雄远征","扫毒2天地对决","烈火英雄","大黄蜂", "惊奇队长","比悲伤更悲伤的故事","哥斯拉2:怪兽之王","阿丽塔:战斗天使", "银河补习班","狮子王","反贪风暴4","熊出没","大侦探皮卡丘","新喜剧之王", "使徒行者2:谍影行动","千与千寻"]y = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23,5.22]# 放进横坐标的数字列表x = range(len(movie_name))# 画出条形图# 颜色color参数表示条形图的顺序颜色,可循环plt.bar(x, y, width=0.5, color=["b","r","g","y","c","m","y","k","c","g","g"])# 修改刻度名称,并旋转90度plt.xticks(x, movie_name, rotation=90)# 展示图形plt.show()
# 水平条形图plt.figure(figsize=(15,10),dpi=100)plt.barh(movie_name, y, color=["b","r","g","y","c","m","k"])plt.show()
有时候为了公平起见,我们需要对比不同电影首日和首周的票房收入,让数据更有说服力。假设数据如下:
movie_name = ["雷神3:诸神黄昏","正义联盟","寻梦环游记"]first_day = [10587.6,10062.5,1275.7] # 首日票房first_weekend=[36224.9,34479.6,11830] # 首周票房
绘制不同电影首日和首周票房的数据图,代码如下:
import matplotlib.pyplot as plt# 设置字体plt.rcParams["font.sans-serif"]=["SimHei"] # 替换sans_serif字体plt.rcParams["axes.unicode_minus"]=False # 解决坐标轴负数的负号显示问题plt.figure(figsize=(15,10),dpi=100)# 准备数据movie_name = ["雷神3:诸神黄昏","正义联盟","寻梦环游记"]# 构造首日票房,首周票房数据first_day = [10587.6,10062.5,1275.7]first_weekend=[36224.9,34479.6,11830]x = range(len(movie_name))# 绘制第一个柱状图plt.bar(x, first_day, width=0.25)# 接着绘制第二个柱状图plt.bar([i+0.25 for i in x], first_weekend, width=0.25)# 修改刻度名称# 显示x轴中文,固定在首日和首周的中间位置plt.xticks([i+0.125 for i in x], movie_name)plt.show()
注意点:
x轴坐标刻度显示位置的调整,既可以通过绘制图形时调整x数据,也可以通过绘制x轴刻度时调整刻度的方法来实现x轴刻度显示在两个柱状图中间。如果不做任何调整,它是默认与第一个柱状图中间对齐的.
直方图,形状类似柱状图却有着与柱状图完全不同的含义。直方图牵涉统计学的概念,首先要对数据进行分组,然后统计每个分组内数据元的数量。 在坐标系中,横轴标出每个组的端点,纵轴表示频数,每个矩形的高代表对应的频数,称这样的统计图为频数分布直方图.
特点:绘制连续性的数据,展示一组或者多组数据的分布情况,用于统计数据分布的特征.
相关概念:
组数:在统计数据时,把数据按照不同的范围分成几个组,分成的组的个数称为组数; 组距:每一组两个端点的差.
直方图绘制 。
plt.hist(x,bins=None) 绘制以x为数值,bins为组数,组数 = 极差/组距 。
实例:假设我们获取到了一些电影的时长,绘制直方图展示电影时长的分布情况,代码如下:
import matplotlib.pyplot as plt# 设置字体plt.rcParams["font.sans-serif"]=["SimHei"] # 替换sans_serif字体plt.rcParams["axes.unicode_minus"]=False # 解决坐标轴负数的负号显示问题plt.figure(figsize=(15,10),dpi=100)# 准备数据,电影时长time =[131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136, 126, 134, 95, 138, 117, 111, 78, 132, 124, 113, 150, 110, 117, 86, 95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123, 86, 101, 99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140, 83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133, 112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144, 83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141, 120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137, 92,121, 112, 146, 97, 137, 105, 98, 117, 112, 81, 97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110, 105, 129, 137, 112, 120, 113, 133, 112, 83, 94, 146, 133, 101, 131, 116, 111, 84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]# 组距bins = 2# 组数,极差/组距groups = int((max(time) - min(time)) / 2)# 绘制直方图plt.hist(time, groups)# 指定x轴刻度的范围plt.xticks(list(range(min(time), max(time)))[::2])# 添加坐标描述plt.xlabel("电影时长大小")plt.ylabel("电影的数量")# 增加网格显示plt.grid(True, linestyle="--", alpha=0.5)plt.show()
扇形图,用整个圆表示总数,用圆内各个扇形的大小表示各部分数量占总数的百分数.
扇形图绘制 。
plt.pie(x, explode=None, labels=None) 。
x:扇形数据 explode:设置某几个分块是否要分离饼图 labels:每块扇形标签 autopct:百分比数据标签 shadow:是否显示阴影 plt.pie()有3个返回值: patches:绘制饼图每一块的对象 texts:文本的列表 autotexts:百分比的文本列表 。
实例:假设我们获取到了一些电影的排片数据,绘制扇形图展示电影的排片占比情况,代码如下:
import matplotlib.pyplot as plt# 设置字体plt.rcParams["font.sans-serif"]=["SimHei"] # 替换sans_serif字体plt.rcParams["axes.unicode_minus"]=False # 解决坐标轴负数的负号显示问题# 饼图绘制plt.figure(figsize=(15, 10), dpi=100)# 电影排片数据movie_name = ["雷神3:诸神黄昏","正义联盟","东方快车谋杀案","寻梦环游记","全球风暴","降魔传","追捕","七十七天","密战","狂兽","其它"]place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]# 绘制扇形图plt.pie(place_count, labels=movie_name, autopct="%1.2f%%")# 指定显示的pie是正圆plt.axis("equal")# 设置图例和标题plt.legend(loc="best")plt.title("排片占比情况")plt.show()
扇形图优化的手段添加阴影,分离特定数据等:
import matplotlib.pyplot as plt# 设置字体plt.rcParams["font.sans-serif"]=["SimHei"] # 替换sans_serif字体plt.rcParams["axes.unicode_minus"]=False # 解决坐标轴负数的负号显示问题plt.figure(figsize=(15, 10), dpi=100)movie_name = ["雷神3:诸神黄昏","正义联盟","东方快车谋杀案","寻梦环游记","全球风暴","降魔传","追捕","七十七天","密战","狂兽","其它"]place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]# 绘制扇形图,添加阴影效果,并让占比最大的雷神3分离explode = [0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]res = plt.pie(place_count, labels=movie_name, explode=explode, autopct="%1.2f%%", shadow=True)patches, texts, autotexts = resprint(patches) # 表示每个扇形的对象print(texts) # 每个文本对象print(autotexts) # 每个百分比对象# 指定显示的pie是正圆plt.axis("equal")# 设置图例和标题plt.legend(loc="best")plt.title("排片占比情况")plt.show()
打印的扇形图返回值:
优化后的扇形图:
本文讲述了使用Matplotlib绘制散点图、柱状图、直方图、扇形图的基本操作.
到此这篇关于Python数据可视化之用Matplotlib绘制常用图形的文章就介绍到这了,更多相关Matplotlib绘制图形内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/tzr0725/article/details/117421462 。
最后此篇关于Python数据可视化之用Matplotlib绘制常用图形的文章就讲到这里了,如果你想了解更多关于Python数据可视化之用Matplotlib绘制常用图形的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
初学者 android 问题。好的,我已经成功写入文件。例如。 //获取文件名 String filename = getResources().getString(R.string.filename
我已经将相同的图像保存到/data/data/mypackage/img/中,现在我想显示这个全屏,我曾尝试使用 ACTION_VIEW 来显示 android 标准程序,但它不是从/data/dat
我正在使用Xcode 9,Swift 4。 我正在尝试使用以下代码从URL在ImageView中显示图像: func getImageFromUrl(sourceUrl: String) -> UII
我的 Ubuntu 安装 genymotion 有问题。主要是我无法调试我的数据库,因为通过 eclipse 中的 DBMS 和 shell 中的 adb 我无法查看/data/文件夹的内容。没有显示
我正在尝试用 PHP 发布一些 JSON 数据。但是出了点问题。 这是我的 html -- {% for x in sets %}
我观察到两种方法的结果不同。为什么是这样?我知道 lm 上发生了什么,但无法弄清楚 tslm 上发生了什么。 > library(forecast) > set.seed(2) > tts lm(t
我不确定为什么会这样!我有一个由 spring data elasticsearch 和 spring data jpa 使用的类,但是当我尝试运行我的应用程序时出现错误。 Error creatin
在 this vega 图表,如果我下载并转换 flare-dependencies.json使用以下 jq 到 csv命令, jq -r '(map(keys) | add | unique) as
我正在提交一个项目,我必须在其中创建一个带有表的 mysql 数据库。一切都在我这边进行,所以我只想检查如何将我所有的压缩文件发送给使用不同计算机的人。基本上,我如何为另一台计算机创建我的数据库文件,
我有一个应用程序可以将文本文件写入内部存储。我想仔细看看我的电脑。 我运行了 Toast.makeText 来显示路径,它说:/数据/数据/我的包 但是当我转到 Android Studio 的 An
我喜欢使用 Genymotion 模拟器以如此出色的速度加载 Android。它有非常好的速度,但仍然有一些不稳定的性能。 如何从 Eclipse 中的文件资源管理器访问 Genymotion 模拟器
我需要更改 Silverlight 中文本框的格式。数据通过 MVVM 绑定(bind)。 例如,有一个 int 属性,我将 1 添加到 setter 中的值并调用 OnPropertyChanged
我想向 Youtube Data API 提出请求,但我不需要访问任何用户信息。我只想浏览公共(public)视频并根据搜索词显示视频。 我可以在未经授权的情况下这样做吗? 最佳答案 YouTube
我已经设置了一个 Twilio 应用程序,我想向人们发送更新,但我不想回复单个文本。我只是想让他们在有问题时打电话。我一切正常,但我想在发送文本时显示传入文本,以确保我不会错过任何问题。我正在使用 p
我有一个带有表单的网站(目前它是纯 HTML,但我们正在切换到 JQuery)。流程是这样的: 接受用户的输入 --- 5 个整数 通过 REST 调用网络服务 在服务器端运行一些计算...并生成一个
假设我们有一个名为 configuration.js 的文件,当我们查看内部时,我们会看到: 'use strict'; var profile = { "project": "%Projec
这部分是对 Previous Question 的扩展我的: 我现在可以从我的 CI Controller 成功返回 JSON 数据,它返回: {"results":[{"id":"1","Sourc
有什么有效的方法可以删除 ios 中 CBL 的所有文档存储?我对此有疑问,或者,如果有人知道如何从本质上使该应用程序像刚刚安装一样,那也会非常有帮助。我们正在努力确保我们的注销实际上将应用程序设置为
我有一个 Rails 应用程序,它与其他 Rails 应用程序通信以进行数据插入。我使用 jQuery $.post 方法进行数据插入。对于插入,我的其他 Rails 应用程序显示 200 OK。但在
我正在为服务于发布请求的 API 调用运行单元测试。我正在传递请求正文,并且必须将响应作为帐户数据返回。但我只收到断言错误 注意:数据是从 Azure 中获取的 spec.js const accou
我是一名优秀的程序员,十分优秀!