【Python】4500字、10个案例分享几个Python可视化小技巧,助你绘制高质量图表
一般在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
上面的折线图看着就有点单调和简单,我们就单单只可以看到数据的走势,除此之外就没有别的收获,我们甚至都不知道这条折线所表示的意义,因为接下来我们来进行一系列的优化
添加标题以及设置Y轴标签
第一步我们先给图表添加标题以及给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轴
现有的这个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轴上刻度字体的大小
我们还可以给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
大家若是感兴趣,可以登上它的官网
https://www.dexplo.org/bar_chart_race/
来了解更多如何使用该模块来制作Python
可视化动图的案例
往期精彩回顾适合初学者入门人工智能的路线及资料下载中国大学慕课《机器学习》(黄海广主讲)机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载本站qq群955171419,加入微信群请扫码:
【Python】4500字、10个案例分享几个Python可视化小技巧,助你绘制高质量图表相关推荐
- 【硬核干货】4500字、10个案例分享几个Python可视化小技巧,助你绘制高质量图表...
大家好,这里是俊欣,又是新的一周,好吧,打工人真的是太苦了 一般在Python当中,我们用于绘制图表的模块最基础的可能就是matplotlib了,今天小编分享几个用该模块进行可视化制作的技巧,帮助你绘 ...
- 10 个案例分享几个 Python 可视化小技巧,助你绘制高质量图表
作者 | 俊欣 来源 | 关于数据分析与可视化 一般在Python当中,我们用于绘制图表的模块最基础的可能就是matplotlib了,今天小编分享几个用该模块进行可视化制作的技巧,帮助你绘制出更加高质 ...
- 分享几个Java面试小技巧,建议收藏!
Java可谓编程界的元老,其资深地位无人撼动.那么学习Java的你,在面试时过五关斩六将还顺利吗?通常来讲,程序员的逻辑思维很清晰,在表达自我方面直接,但这在面试中可行不通,毕竟面试涉及到人际交流,所 ...
- 10个提升着陆页设计效果的小技巧
网站的着陆页承载了太多的东西.当用户打开着陆页的时候,你得让他们感知到你的品牌调性,通过行为召唤元素促使用户执行特定的操作,通过视觉化的手法,给用户留下深刻的印象等等.想要做好,真的很难.今天的文章将 ...
- 网络知识:分享几个路由器设置小技巧,欢迎收藏!
路由器是连接因特网中各局域网.广域网的设备.路由器的作用是用于连接不同的网络,同时选择信息传送的线路,从而实现各局域网内的设备共享网络,使其可以同时访问互联网. 今天给大家分享几个路由器设置小技巧,欢 ...
- 网络基础:分享几个路由器设置小技巧,总有用得到的一天!
路由器是连接因特网中各局域网.广域网的设备.路由器的作用是用于连接不同的网络,同时选择信息传送的线路,从而实现各局域网内的设备共享网络,使其可以同时访问互联网. 分享几个路由器设置小技巧,总有用得到的 ...
- 网络技巧:分享几个路由器设置小技巧,总有用得到的一天!
路由器是连接因特网中各局域网.广域网的设备.路由器的作用是用于连接不同的网络,同时选择信息传送的线路,从而实现各局域网内的设备共享网络,使其可以同时访问互联网. 分享几个路由器设置小技巧,总有用得到的 ...
- 分享几个路由器设置小技巧,总有用得到的一天!
路由器是连接因特网中各局域网.广域网的设备.路由器的作用是用于连接不同的网络,同时选择信息传送的线路,从而实现各局域网内的设备共享网络,使其可以同时访问互联网. 分享几个路由器设置小技巧,总有用得到的 ...
- 锤子手机Android auto,分享锤子手机Smartisan OS的几个使用小技巧,效率更高
原标题:分享锤子手机Smartisan OS的几个使用小技巧,效率更高 老罗创办的锤子科技一直以来都追求着效率的提升和不随流俗的设计美感,锤子手机基于安卓深度定制的系统Smartisan OS正是体现 ...
最新文章
- 让世界零距离 小鱼易连的大梦想
- 实战 Spring Cloud Gateway 之限流篇
- 手把手教你学51单片机-c语言版期末考试,手把手从零教你学51单片机
- oracle 取今日0时,Oracle 取得当天0时0分0秒和23时59分59秒
- 重学TCP协议(12)SO_REUSEADDR、SO_REUSEPORT、SO_LINGER
- Windows中使用wget整站下载
- java ppt转图片 内存溢出_Java虚拟机内存及内存溢出异常
- 26日直播预告丨 经典知识库:ASM元数据简介及案例分享
- 中国抗生素骨水泥行业市场供需与战略研究报告
- Python计算数组的n位全排列(permutations的使用)
- VMware12安装虚拟机教程、Ubuntu16.04安装教程
- Linux内核多线程(四)
- spring boot服务部署后访问zul页面404
- [Slackware13.0学习笔记]上网问题
- [gdc17]《守望先锋》的EntityComponent架构
- 现在dns怎么解析域名呢?dns的形式有哪些?
- 第二章:硬件访问服务(4)-HAL编写
- 使用NSIS脚本制作一个安装包
- 两台电脑之间如何使用共享文件夹来实现共享文件
- 云骞开源即时通讯软件