IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> matplotlib库的使用 -> 正文阅读

[Python知识库]matplotlib库的使用

matplotlib库的使用

继续分享自己的学习历程!

概念什么的就不说了,网上资料很多,那就直接开始说要点吧!
主要是五种绘图:折线图、散点图、直方图、条形图以及饼图。
以实例来说我觉得效果会更好。大部分注释说明都写在代码块里了。
其实无论是折线图也好还是散点图那些也好,基本要素的代码都是一模一样的,需要注意的只不过是一些细节而已。

导入就在终端用pip命令就好了,或者是直接在pycharm里输入

from matplotlib import pyplot as plt

如果没装这个库的话,在matplotlip下面会显示红线,将箭头放上去然后安装这个库就ok了。

导入方式:

from matplotlib import pyplot as plt

折线图:

实例一:
就比如举个列子来说,我们来绘制自己和自己的好兄弟从11岁到20岁的每年交女朋友的情况(只是举例,并非事实哈,嘿嘿):

#设置X轴的信息
x = ["{}岁".format(i) for i in range(11,21)]

#传入自己和好兄弟每年交的女朋友数量
y_1 = [1,0,1,1,2,4,3,2,3,4]
y_2 = [1,2,2,1,3,3,4,5,2,5]

# 设置字体,不然会中文会显示方框
plt.rcParams["font.sans-serif"] = ["SimHei"]

# 设置字体大小
plt.rcParams["font.size"] = 10

# 设置图片大小以及像素
plt.figure(figsize=(15, 8),dpi=80)

# 将X轴的值和Y轴的值传入绘图
# label是设置标签更好辨认,color是设置线条的颜色,linestyle设置线条样式":" "-." "--",linewidth是设置线条的宽度
plt.plot(x,y_1,label="自己",color="orange",linestyle="-.",linewidth=2)
plt.plot(x,y_2,label="同桌",color="cyan",linestyle="-.")

# 设置X轴的名称
plt.xlabel("年龄")
# 设置Y轴的名称
plt.ylabel("女朋友个数")
# 设置标题
plt.title("每年交女朋友个数趋势图")

#设置Y轴的刻度
plt.yticks(range(0,9))

#绘制网格,alpha是调整网格的透明度,linestyle设置线条样式
plt.grid(alpha=0.4,linestyle=":")

#添加图例,加参数loc="upper left"则显示在左上角
plt.legend()

#保存图片
plt.savefig("./t1.png")

#展示图片
plt.show()

这里的显示中文标签也有别的方法,但是我觉得这样写是最简单的了。
运行的效果如图:
在这里插入图片描述
实例二:比实例一复杂一些,其中一些函数也稍微难理解一些。

from matplotlib import pyplot as plt
import random

# X轴代表是两个小时中的每一分钟
x = range(0, 120)

# Y轴代表气温的值,这里就用随机数来模拟了,是用随机数就还得导入一个库,也是自带的,导入方式为import random
y = [random.randint(20,30) for i in range(120)]

# 设置字体,不然会中文会显示方框
plt.rcParams["font.sans-serif"] = ["SimHei"]

# 设置字体大小
plt.rcParams["font.size"] = 10

# 设置图片大小以及像素
plt.figure(figsize=(15, 8),dpi=80)

#传入参数
plt.plot(x,y)

# 调整x轴的刻度,这里的+=是在上面一个的基础上继续的
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]

#这里的plt.xticks()是向x轴传参数,改变一些设置。同样的也有plt.yticks()
#取步长,数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::3], _xtick_labels[::3], rotation=45) #rotation旋转的度数,fontproperties=my_font

# 设置X轴的名称
plt.xlabel("时间")

# 设置Y轴的名称
plt.ylabel("气温")

# 设置标题
plt.title("10点到12点间气温变化图")

#绘制网格,alpha是调整网格的透明度
plt.grid(alpha=0.1)

#展示
plt.show()

运行结果如下:
在这里插入图片描述

散点图:

区别在于散点图使用plt.scatter()来传入的参数。

折线图有详细的注释了,下面的实例就不在做解释了,极个别的会再注释来说明。

from matplotlib import pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]

y_3 = [11,17,16,11,12,11,12,6,6,7,8,9,12,14,15,17,18,20,16,17,20,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,17,10,11,13,12,13,6]

x_3 = range(1,32)
x_10 = range(51,82)

#设置大小
plt.figure(figsize=(15,8),dpi=80)

#使用scatter绘制散点图
plt.scatter(x_3,y_3,label="3月份")
plt.scatter(x_10,y_10,label="10月份")

#调整刻度
_x = list(x_3)+list(x_10)
_xtick_lables = ["3月{}日".format(i) for i in x_3]
_xtick_lables += ["10月{}日".format(i-50) for i in x_10]
plt.xticks(_x[::3], _xtick_lables[::3], rotation=45)
#添加图例
plt.legend()
#添加描述信息
plt.xlabel("日期")
plt.ylabel("温度℃")
plt.title("每日气温图")
plt.show()

运行结果如下:
在这里插入图片描述

柱状图

我觉得条形图和直方图合起来就是柱状图了,哈哈。特别像。
这里用的是plt.bar()

from matplotlib import pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]

#这里的电影名字太长了,就用换行符调整了一下
a = ["战狼","速度与激情8","羞羞的铁拳","前任3:\n再见前任","功夫瑜伽","西游伏妖篇","变形金刚5:\n最后的骑士","芳华","摔跤吧!爸爸","寻梦环游记","加勒比海盗5:\n死无对证","金刚:骷髅岛","极限特工:\n终极回归","生化危机6:\n终章","乘风破浪","神偷奶爸3","智取威虎山","蜘蛛侠:\n英雄归来","大闹天竺","雷神3:\n诸神黄昏"]

b = [56.39,26.49,21.9,19.26,17.53,16.49,15.45,14.11,12.96,12.02,11.8,11.61,11.28,11.61,11.28,11.12,10.38,10.3,8.74,7.67]
plt.figure(figsize=(15,8),dpi=80)

#使用bar绘制
plt.bar(range(len(a)),b,width=0.3)

plt.xticks(range(len(a)),a,rotation=45)

plt.savefig("./1.png")
plt.show()

运行结果:
在这里插入图片描述
下面用的是plt.barh():

from matplotlib import pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]

a = ["战狼","速度与激情8","羞羞的铁拳","前任3:再见前任","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","芳华","摔跤吧!爸爸","寻梦环游记","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","蜘蛛侠:英雄归来","大闹天竺","雷神3:诸神黄昏"]

b = [56.39,26.49,21.9,19.26,17.53,16.49,15.45,14.11,12.96,12.02,11.8,11.61,11.28,11.61,11.28,11.12,10.38,10.3,8.74,7.67]
plt.figure(figsize=(15,8),dpi=80)

#barh绘制横着的,bar是竖着的
plt.barh(range(len(a)),b,height=0.3,color="orange")
plt.yticks(range(len(a)),a)
plt.grid(alpha=0.3)

plt.savefig("./2.png")
plt.show()

运行结果:
在这里插入图片描述
用柱状图来作比较看着是特别舒服的:

from matplotlib import pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]

a = ["猩球崛起3:中级之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]
b_16 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
b_14 = [2358,399,2358,362]

bar_width = 0.2
x_14 = list(range(len(a)))
x_15 = [i+bar_width for i in x_14]

x_16 = [i+bar_width*2 for i in x_14]

plt.figure(figsize=(15,8),dpi=80)

plt.bar(range(len(a)),b_14,width=bar_width,label="9月14日")
plt.bar(x_15,b_15,width=bar_width,label="9月15日")
plt.bar(x_16,b_16,width=bar_width,label="9月16日")

plt.legend()

#设置x轴刻度
plt.xticks(x_15,a)

plt.show()

运行结果:
在这里插入图片描述

饼图

用的是plt.pie()
饼图是和其他几个相对来说细节区别最多的了。

from matplotlib import pyplot as plt
#plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["font.family"] = "FangSong" 
plt.rcParams["font.size"] = 18

x = [8, 7, 3, 6]

labels = ["工作", "睡觉", "吃饭", "玩乐"]

plt.figure(figsize=(15,8),dpi=80)

plt.pie(x,
        explode=[0, 0.1, 0.2, 0.1],  # 每块之间的距离
        labels=labels,  # 设置名字标签
        labeldistance=1.1,  # 名字标签的距离
        radius=1.2,  # 图像的大小
        colors=["b", "r", "y", "g"],  # 每块的颜色
        autopct="%.2f%%",  # 显示百分比
        shadow=True  # 是否显示阴影
        )

plt.title("一天时间分配比重饼状图")

plt.show()

运行结果:
在这里插入图片描述
绘制什么图要根据适当的类型来选择最合适的,这样才能最大化的利用起来,也能够更好的展示你想要的结果。

文章可能有解释不当或者错误的地方,欢迎交流!

以上的学习历程是我在b站上跟着视频以及查资料学习后整理的,不得不说b站真的是个好东西啊!让我学到了很多东西。

继续坚持,加油吧!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 11:58:44  更:2021-08-13 11:59:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 1:56:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计