前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据可视化:认识Matplotlib

数据可视化:认识Matplotlib

作者头像
马拉松程序员
发布2023-09-02 08:06:10
1810
发布2023-09-02 08:06:10
举报

数据经过NumPy和Pandas的计算,最终得到了我们想要的数据结论,但是这些数据结论并不直观,所以想要把数据分析的结论做到可视化,让任何其他人看起来毫无压力,那么Matplotlib将派上用场。

Matplotlib简介

Matplotlib是一个Python全面的绘图库,用于创建静态、动画和交互式可视化。通过 Matplotlib,我们可以仅需要写几行代码,就可以生成绘图,直方图,功率谱,条形图,错误图,散点图等,方便数据展示。

Matplotlib的官网地址为https://matplotlib.org/,这里有权威的官网资料,同样与numpy和pandas一样,文档是英文的表达,对读者有一定的能力要求。

折线图

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
# 用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
#x轴生成一个ndarray
x = np.arange(1, 11)
# y轴等于2x
y = 2 * x
#设置作图标题
plt.title("y=2x的坐标图")
#设置x轴标签
plt.xlabel("x轴")
#设置y轴标签
plt.ylabel("y轴")
#绘制折线图
plt.plot(x, y)
#将折线图显示
plt.show()

代码运行结果会生成y=2x的坐标图,如图所示。如果不设置plt的rcParams的参数值,那么生成的图片中将无法正常显示中文。

绘制折线图方法plt.plot(x,y,format_string,**kwargs)

x:x轴数据,列表或数组,可选

y:y轴数据,列表或数组

format_string:控制曲线的格式字符串,可选,由颜色字符、风格字符和标记字符组成。

**kwargs:表示可选多个

常用的控制曲线格式的字符串如下几种:

color:控制颜色,color=’g’

linestyle:线条风格,简写ls,例如ls='-'。'--'表示长虚线

marker:标记风格,例如marker = 'o',

markerfacecolor:标记颜色,简写用mfc,例如mfc= 'red'

markersize:标记尺寸,简写用ms,例如ms= 10

下面使用上面的自定义参数制作一个个性化的图表:

代码语言:javascript
复制
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
x = np.arange(1, 11)
y = 2 * x
plt.title("y=2x的坐标图")
plt.xlabel("x轴")
plt.ylabel("y轴")
#个性化制作曲线
plt.plot(x, y, color='r', ls='--', marker='o', mfc='blue', ms=10)
plt.show()

代码运行结果如图所示

常用的颜色字符的简写如表所示,基本上可以用颜色英文单词的首字母。如果需要更多颜色,也支持使用16进制的RGB色彩模式。

颜色

简写字符

红色

r

绿色

g

蓝色

b

黄色

y

黑色

k

白色

w

常用风格字符

风格

字符

实线

-

长虚线

--

短虚线

:

点划线

-.

常见的标记字符

标记说明

字符

点标记

.

实心圆

o

十字标记

+

五星

*

x标记

x

菱形标记

D

方形标记

s

五角标记

p

散点图

代码语言:javascript
复制
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
x = [1, 2, 3, 4, 5]
y = [2, 3, 7, 8, 4]
plt.title("散点图")
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.scatter(x, y, color='r', marker='*')
plt.show()

代码运行结果会生成x轴和y轴指定点的坐标图,如图所示。scatter ()函数中的color表示颜色,marker表示点的形状,与plot的值通用。

直方图

代码语言:javascript
复制
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号
# 生成正态分布的10000个随机数
data = np.random.randn(10000)
plt.hist(data, bins=50, fc="b", ec="w")
# 设置x轴标签
plt.xlabel("区间")
# 设置y轴标签
plt.ylabel("频数")
# 设置图标题
plt.title("正态分布直方图")
plt.show()

代码运行结果如图所示。randn()函数的作用就是从标准正态分布中返回一个或多个样本值。标准正态分布俗称高斯分布,正态分布是大自然中最常见的分布,标准正态分布就是期望为0,方差为1的正态分布。

在hist()方法中参数含义如下:

data:必选参数,绘图数据

bins:直方图的长条形数目,默认为10,为了更加明显地看出正态分布,可以设置大一些。

fc:全写为facecolor,长条形的颜色

ec:全写为edgecolor,长条形边框的颜色

条形图

在之前的小节中得到了高分电影上映年份的TOP,现在我们就将此数据做成可视化的条形图。

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
df = pd.read_excel('movie.xlsx')
# 统计每年上映的电影数的前十年份
series = df['上映年份'].value_counts()[:10]
# 格式化年份数据 int转成str 获得横(x)坐标数据
x = []
for i in series.index.tolist():
x.append(str(i))
#获得纵(y)坐标数据
y = series.values.tolist()
ax = plt.bar(x, y, width=0.4)
# 添加横坐标显示
plt.xticks(x, x)
# 在每个条形图上方显示数值
for a, b in zip(x, y):
plt.text(a, b + 0.1, '%.0f' % b, ha='center', va='bottom', fontsize=10)
#设置横纵坐标标签
plt.xlabel('上映年份')
plt.ylabel('上映数量')
plt.title('高评分电影上映年代TOP10')
plt.show()

代码运行结果如图所示,得到这个可视化的图表后,在简单意义上已经完成了一个简单的数据获取、分析以及可视化的过程。

条形图绘制函数bar(),基本用法如下:

bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

x: 横坐标(序列)

height:纵坐标(系列)

width:条形图的宽度,默认是0.8,可以根据实际大小设置,以更加美观

bottom:用于绘制堆叠条形图,默认值为None

align:x轴刻度标签的对齐方式,包括:'center','edge',默认是'center'

饼图

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt


plt.rcParams['font.sans-serif'] = ['SimHei']
df = pd.read_excel('movie.xlsx')
# 统计每年上映的电影数的前十年份
series = df['制片国家/地区'].value_counts()[:10]
label_list = series.index.tolist()  # 各部分标签
size = []  # 各部分大小
last = 250
for i in series.values:
last = last - i
size.append(i / 250)
# 显示前10个国家名称,补充剩余国家
label_list.append("其他国家")
size.append(last / 250)
#设置画布大小
plt.figure(figsize=(8, 8))
# 设置各部分颜色
color = ["r", "g", "b", "y", "tomato", "skyblue", "sandybrown", "hotpink", "lightcoral", "mediumturquoise",
"paleturquoise"]
# 画图
plt.pie(size, colors=color, labels=label_list, labeldistance=1.1,
autopct="%1.1f%%", shadow=True, startangle=90)
# 设置横轴和纵轴大小相等,这样饼才是圆的
plt.axis("equal")
plt.title("高评分电影制片国家分布占比图")
plt.legend()
plt.show()

代码运行结果如图所示。

pie()方法用来绘制饼图, pie的参数有很多,如下所列出:

代码语言:javascript
复制
pie(x, explode=None, labels=None, colors=None, autopct=None,
pctdistance=0.6, shadow=False, labeldistance=1.1,
startangle=None, radius=None, counterclock=True,
wedgeprops=None, textprops=None, center=(0, 0), frame=False,
rotatelabels=False, *, data=None)

pie方法常用的参数有以下几个:

x:饼图百分比数据

labels:设置饼图中各个部分的标签

autopct:设置百分比信息的字符串格式化方式,默认值为None,不显示百分比

shadow:设置饼图的阴影,使得看上去有立体感,默认值为False

startangle:设置饼图中第一个部分的起始角度

radius:设置饼图的半径,数值越大,饼图越大

counterclock:设置饼图的方向,默认为True,表示逆时针方向,值为False时为顺时针方向

colors:颜色设置,默认值为None, 会使用默认的调色盘,所以通常情况下,不需要设置该参数。但是调色盘会有10个颜色,上图例子中有11个部分,这样造成了首位颜色一样,不好区分,所以设置自定义11个颜色的调色盘

explode:设置突出显示饼图中的指定部分,参数值需要与x的个数一致

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马拉松程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Matplotlib简介
  • 直方图
  • 条形图
  • 饼图
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档