京公网安备 11010802034615号
经营许可证编号:京B2-20210330
作者:俊欣
来源:关于数据分析与可视化
一般在Python当中,我们用于绘制图表的模块最基础的可能就是matplotlib了,今天小编分享几个用该模块进行可视化制作的技巧,帮助你绘制出更加高质量的图表。
同时本篇文章的第二部分是用Python来制作可视化动图,让你更加清楚的了解到数据的走势
最开始,我们先导入数据集,并且导入我们需要用到的库
import pandas as pd import matplotlib.pyplot as plt
plt.style.use("seaborn-darkgrid") # 读取数据 aapl = pd.read_csv("AAPL.csv") print(aapl.head())
output
Date Open High ... Close Adj Close Volume 0 2021-9-30 143.660004 144.380005 ... 141.500000 141.293793 88934200 1 2021-10-1 141.899994 142.919998 ... 142.649994 142.442108 94639600 2 2021-10-4 141.759995 142.210007 ... 139.139999 138.937225 98322000 3 2021-10-5 139.490005 142.240005 ... 141.110001 140.904358 80861100 4 2021-10-6 139.470001 142.149994 ... 142.000000 141.793060 83221100
上面的代码我们用到的是“苹果”公司2021年的9月31日到12月31日的股价走势,我们先来简单的画一张折线图,代码如下
plt.figure(figsize=(12,6)) plt.plot(aapl["Close"])
output
上面的折线图看着就有点单调和简单,我们就单单只可以看到数据的走势,除此之外就没有别的收获,我们甚至都不知道这条折线所表示的意义,因为接下来我们来进行一系列的优化
第一步我们先给图表添加标题以及给X轴、Y轴设置标签,代码如下
plt.figure(figsize=(12,6)) plt.plot(aapl["Close"])
# 添加标题和给Y轴打上标记 plt.ylabel("Closing Price", fontsize=15) ## 收盘价 plt.title("Apple Stock Price", fontsize=18) ## 标题:苹果公司股价
output
现有的这个Y轴代表的是收盘价,要是我们还想再往图表当中添加另外一列的数据,该数据的数值范围和已有的收盘价的数值范围不同,如果放在一起,绘制出来的图表可不好看,如下
plt.figure(figsize=(12,6)) plt.plot(aapl["Close"])
# 第二根折线图 plt.plot(aapl["Volume"])
# Y轴的名称和标记 plt.ylabel("Closing Price", fontsize=15) plt.title("Apple Stock Price", fontsize=18)
output
可以看到我们代表股价的那条蓝线变成了水平的直线,由于它的数值范围和“Volume”这一列当中的数据,数值范围差了不少,因此我还需要一个Y轴,来代表“Volume”这一列数据的走势,代码如下
fig, ax1 = plt.subplots(figsize=(12,6)) # 第二个Y轴的标记 ax2 = ax1.twinx()
ax1.plot(aapl["Close"])
ax2.plot(aapl["Volume"], color="r") # 添加标题和Y轴的名称,有两个Y轴 ax1.set_ylabel("Closing Price", fontsize=15)
ax2.set_ylabel("Volume", fontsize=15)
plt.title("Apple Stock Price", fontsize=18)
output
上面的代码我们通过twinx()方法再来新建一个Y轴对象,然后对应的数据是Volume这一列当中的数据,而给Y轴标记的方式也从上面的plt.ylabel()变成了ax.set_ylabel()
接下来给绘制好的图表添加图例,不同的折线代表的是不同的数据,代码如下
fig, ax1 = plt.subplots(figsize=(12,6)) # 第二个Y轴 ax2 = ax1.twinx()
ax1.plot(aapl["Close"])
ax2.plot(aapl["Volume"], color="r") # 设置Y轴标签和标题 ax1.set_ylabel("Closing Price", fontsize=15)
ax2.set_ylabel("Volume", fontsize=15)
plt.title("Apple Stock Price", fontsize=18) # 添加图例 ax1.legend(["Closing price"], loc=2, fontsize=12)
ax2.legend(["Volume"], loc=2, bbox_to_anchor=(0, 0.9), fontsize=12)
output
在plt.legend()方法当中的loc参数代表的是图例的位置,2代表的是左上方,具体的大家可以通过下面的链接来查阅
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html
有时候我们感觉图表当中的网格线有点碍眼,就可以将其去掉,代码如下
fig, ax1 = plt.subplots(figsize=(12,6)) # 第二个Y轴 ax2 = ax1.twinx()
ax1.plot(aapl["Close"])
ax2.plot(aapl["Volume"], color="r") # 设置Y轴标签和标题 ax1.set_ylabel("Closing Price", fontsize=15)
ax2.set_ylabel("Volume", fontsize=15)
plt.title("Apple Stock Price", fontsize=18) # 添加图例 ax1.legend(["Closing price"], loc=2, fontsize=12)
ax2.legend(["Volume"], loc=2, bbox_to_anchor=(0, 0.9), fontsize=12) # 去掉网格线 ax1.grid(False)
ax2.grid(False)
output
这样出来的图表是不是看着顺眼多了呢?!
有时候我们也想在图表当中添加一些文字,可以是注释也可以是一些赞美性的语言,可以通过代码来实现,如下
fig, ax1 = plt.subplots(figsize=(12,6)) # 第二个Y轴 ax2 = ax1.twinx()
ax1.plot(aapl["Close"])
ax2.plot(aapl["Volume"], color="r") # 设置Y轴标签和标题 ax1.set_ylabel("Closing Price", fontsize=15)
ax2.set_ylabel("Volume", fontsize=15)
plt.title("Apple Stock Price", fontsize=18) # 添加图例 ax1.legend(["Closing price"], loc=2, fontsize=12)
ax2.legend(["Volume"], loc=2, bbox_to_anchor=(0, 0.9), fontsize=12) # 去掉网格线 ax1.grid(False)
ax2.grid(False)
date_string = datetime.strptime("2021-10-31", "%Y-%m-%d") # 添加文字 ax1.text(
date_string, ## 代表的是添加的文字的位置 170, "Nice plot!", ## 添加的文字的内容 fontsize=18, ## 文字的大小 color="green" ## 颜色 )
output
在上面的图表当中,无论是标题还是注释或者是图例,都是英文的,我们需要往里面添加中文的内容时候,还需要添加下面的代码
plt.rcParams['font.sans-serif'] = ['SimHei']
fig, ax1 = plt.subplots(figsize=(12,6)) # 第二个Y轴 ax2 = ax1.twinx()
ax1.plot(aapl["Close"])
ax2.plot(aapl["Volume"], color="r") # 设置Y轴标签和标题 ax1.set_ylabel("收盘价", fontsize=15)
ax2.set_ylabel("成交量", fontsize=15)
plt.title("苹果公司股价走势", fontsize=18) # 添加图例 ax1.legend(["Closing price"], loc=2, fontsize=12)
ax2.legend(["Volume"], loc=2, bbox_to_anchor=(0, 0.9), fontsize=12) # 去掉网格线 ax1.grid(False)
ax2.grid(False) # 添加文字 ax1.text(
date_string, 170, "画的漂亮",
fontsize=18,
color="green" )
output
这样全局的字体都被设置成了“黑体”,文本内容都是用中文来显示
我们还可以给X轴/Y轴添加边框,以及边框的粗细也可以通过代码来进行调整,如下
plt.rcParams["axes.edgecolor"] = "black" plt.rcParams["axes.linewidth"] = 2
同时我们还可以对X轴以及Y轴上面的刻度,它们的字体大小进行设置,代码如下
# tick size ax1.tick_params(axis='both', which='major', labelsize=13)
ax2.tick_params(axis='both', which='major', labelsize=13)
output
出来的图表是不是比一开始的要好很多呢?
接下来给大家介绍一个制作动图的Python库,bar_chart_race,只需要简单的几行代码,就可以制作出随着时间变化的直方图动图,代码如下
import bar_chart_race as bcr import pandas as pd # 生成GIF图像 df = pd.read_csv('covid19_tutorial.csv', index_col=index_col,
parse_dates=parse_dates)
bcr.bar_chart_race(df, 'covid19_tutorial_horiz.gif')
output
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在Python开发中,HTTP请求是与外部服务交互的核心场景——调用第三方API、对接微服务、爬取数据等都离不开它。虽然requests库已 ...
2025-12-12在数据驱动决策中,“数据波动大不大”是高频问题——零售店长关心日销售额是否稳定,工厂管理者关注产品尺寸偏差是否可控,基金 ...
2025-12-12在CDA(Certified Data Analyst)数据分析师的能力矩阵中,数据查询语言(SQL)是贯穿工作全流程的“核心工具”。无论是从数据库 ...
2025-12-12很多小伙伴都在问CDA考试的问题,以下是结合 2025 年最新政策与行业动态更新的 CDA 数据分析师认证考试 Q&A,覆盖考试内容、报考 ...
2025-12-11在Excel数据可视化中,柱形图因直观展示数据差异的优势被广泛使用,而背景色设置绝非简单的“换颜色”——合理的背景色能突出核 ...
2025-12-11在科研实验、商业分析或医学研究中,我们常需要判断“两组数据的差异是真实存在,还是偶然波动”——比如“新降压药的效果是否优 ...
2025-12-11在CDA(Certified Data Analyst)数据分析师的工作体系中,数据库就像“数据仓库的核心骨架”——所有业务数据的存储、组织与提 ...
2025-12-11在神经网络模型搭建中,“最后一层是否添加激活函数”是新手常困惑的关键问题——有人照搬中间层的ReLU激活,导致回归任务输出异 ...
2025-12-05在机器学习落地过程中,“模型准确率高但不可解释”“面对数据噪声就失效”是两大核心痛点——金融风控模型若无法解释决策依据, ...
2025-12-05在CDA(Certified Data Analyst)数据分析师的能力模型中,“指标计算”是基础技能,而“指标体系搭建”则是区分新手与资深分析 ...
2025-12-05在回归分析的结果解读中,R方(决定系数)是衡量模型拟合效果的核心指标——它代表因变量的变异中能被自变量解释的比例,取值通 ...
2025-12-04在城市规划、物流配送、文旅分析等场景中,经纬度热力图是解读空间数据的核心工具——它能将零散的GPS坐标(如外卖订单地址、景 ...
2025-12-04在CDA(Certified Data Analyst)数据分析师的指标体系中,“通用指标”与“场景指标”并非相互割裂的两个部分,而是支撑业务分 ...
2025-12-04每到“双十一”,电商平台的销售额会迎来爆发式增长;每逢冬季,北方的天然气消耗量会显著上升;每月的10号左右,工资发放会带动 ...
2025-12-03随着数字化转型的深入,企业面临的数据量呈指数级增长——电商的用户行为日志、物联网的传感器数据、社交平台的图文视频等,这些 ...
2025-12-03在CDA(Certified Data Analyst)数据分析师的工作体系中,“指标”是贯穿始终的核心载体——从“销售额环比增长15%”的业务结论 ...
2025-12-03在神经网络训练中,损失函数的数值变化常被视为模型训练效果的“核心仪表盘”——初学者盯着屏幕上不断下降的损失值满心欢喜,却 ...
2025-12-02在CDA(Certified Data Analyst)数据分析师的日常工作中,“用部分数据推断整体情况”是高频需求——从10万条订单样本中判断全 ...
2025-12-02在数据预处理的纲量统一环节,标准化是消除量纲影响的核心手段——它将不同量级的特征(如“用户年龄”“消费金额”)转化为同一 ...
2025-12-02在数据驱动决策成为企业核心竞争力的今天,A/B测试已从“可选优化工具”升级为“必选验证体系”。它通过控制变量法构建“平行实 ...
2025-12-01