动手

题目

假设大家在30岁的时候,根据自己的实际情况,统计出来了从11岁到30岁每年交的女(男)朋友的数量如列表a,请绘制出该数据的折线图,以便分析自己每年交女(男)朋友的数量走势

a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]

要求:
y轴表示个数
x轴表示岁数,比如11岁,12岁等

代码+结果

代码

# -*- coding: utf-8 -*-'''
@Time    : 2020/11/28 12:26
@Author  : yuhui
@Email   : 3476237164@qq.com
@FileName: matplotlib_4.py
@Software: PyCharm
'''"""08【matplotlib】06matplotlib绘制多次图形和不同图形的差异介绍和总结""""""
假设大家在30岁的时候,根据自己的实际情况,统计出来了从11岁到30岁每年交的女(男)朋友的数量如列表a,请绘制出该数据的折线图,以便分析自己每年交女(男)朋友的数量走势
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
要求:y轴表示个数x轴表示岁数,比如11岁,12岁等
"""import matplotlib.pyplot as plt# 解决中文乱码
plt.rcParams["font.sans-serif"]=["KaiTi"]
plt.rcParams["font.family"]="sans-serif"
# 解决符号无法显示的问题
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题fig=plt.figure(figsize=(16,9),dpi=100
)"""x轴数据和y轴数据"""
x=range(11,31)  # 11岁到30岁
y=[1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]plt.plot(x,y)"""调整x轴和y轴的刻度"""# 调整y轴的刻度
_y=y
plt.yticks(range(min(_y),max(_y)))# 调整x轴的刻度
_x=x
_xticks=[f"{i}岁" for i in range(11,31)]
plt.xticks(_x,_xticks,rotation=45)"""添加描述性信息"""
plt.xlabel("年龄/岁")
plt.ylabel("人数/人")
plt.title("从11岁到30岁每年交的女(男)朋友的数量")# 展示
plt.show()

结果

为图像背景添加网格线

我们通过网格线能够大概地知道这个点大概是在什么位置

默认情况下


在这种情况下,matplotlib是如何绘制网格线的?

这种情况:没有传递任何参数,也就是默认的情况

那么,在这种情况下,我们应该如何设置网格线的密集程度呢?

可以通过改变x轴和y轴的刻度的疏密程度来改变网格线的密集程度


设置网格线的属性

透明度

最终的代码+结果

# -*- coding: utf-8 -*-'''
@Time    : 2020/11/28 12:26
@Author  : yuhui
@Email   : 3476237164@qq.com
@FileName: matplotlib_4.py
@Software: PyCharm
'''"""08【matplotlib】06matplotlib绘制多次图形和不同图形的差异介绍和总结""""""
假设大家在30岁的时候,根据自己的实际情况,统计出来了从11岁到30岁每年交的女(男)朋友的数量如列表a,请绘制出该数据的折线图,以便分析自己每年交女(男)朋友的数量走势
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
要求:y轴表示个数x轴表示岁数,比如11岁,12岁等
"""import matplotlib.pyplot as plt# 解决中文乱码
plt.rcParams["font.sans-serif"]=["KaiTi"]
plt.rcParams["font.family"]="sans-serif"
# 解决符号无法显示的问题
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题fig=plt.figure(figsize=(16,9),dpi=100
)"""x轴数据和y轴数据"""
x=range(11,31)  # 11岁到30岁
y=[1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]plt.plot(x,y)"""调整x轴和y轴的刻度"""# 调整y轴的刻度
_y=y
# plt.yticks(range(min(_y),max(_y)))# 调整横向网格线的疏密程度
plt.yticks(range(9))# 调整x轴的刻度
_x=x
_xticks=[f"{i}岁" for i in range(11,31)]
plt.xticks(_x,_xticks,rotation=45)"""添加描述性信息"""
plt.xlabel("年龄/岁")
plt.ylabel("人数/人")
plt.title("从11岁到30岁每年交的女(男)朋友的数量")"""设置图片的背景"""
# 绘制网格线
plt.grid(alpha=0.4,  # 透明度  0~1  透明~不透明
)# 展示
plt.show()

再动手一次

题目

假设大家在30岁的时候,根据自己的实际情况,统计出来了你和你同桌各自从11岁到30岁每年交的女(男)朋友的数量如列表a和b,请在一个图中绘制出该数据的折线图,以便比较自己和同桌20年间的差异,同时分析每年交女(男)朋友的数量走势

a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]

要求:
y轴表示个数
x轴表示岁数,比如11岁,12岁等

代码+结果1.0

# -*- coding: utf-8 -*-'''
@Time    : 2020/11/28 13:38
@Author  : yuhui
@Email   : 3476237164@qq.com
@FileName: matplotlib_5.py
@Software: PyCharm
'''"""08【matplotlib】06matplotlib绘制多次图形和不同图形的差异介绍和总结""""""
假设大家在30岁的时候,根据自己的实际情况,统计出来了你和你同桌各自从11岁到30岁每年交的女(男)朋友的数量如列表a和b,请在一个图中绘制出该数据的折线图,以便比较自己和同桌20年间的差异,同时分析每年交女(男)朋友的数量走势
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]
要求:y轴表示个数x轴表示岁数,比如11岁,12岁等
"""import matplotlib.pyplot as plt# 解决中文乱码
plt.rcParams["font.sans-serif"]=["KaiTi"]
plt.rcParams["font.family"]="sans-serif"
# 解决符号无法显示的问题
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题fig=plt.figure(figsize=(16,9),dpi=100
)"""x轴数据和y轴数据"""
x=range(11,31)  # 11岁到30岁
y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]  # 自己
y_2 = [1,0,3,1,2,2,3,3,2,1 ,2,1,1,1,1,1,1,1,1,1]  # 同桌# 在同一张画布上同时绘制出两个图
plt.plot(x,y_1)
plt.plot(x,y_2)# 设置x轴和y轴的刻度数据# x轴
_x=x
_xticks=[f"{i}岁" for i in range(11,31)]
plt.xticks(_x,_xticks)# y轴
_y=y_1+y_2
plt.yticks(range(min(_y),max(_y)+1))# 绘制网格线
plt.grid(alpha=0.4,
)plt.show()

问题

当我们将这个图给别人看的时候,别人可能不会很明白,哪个颜色对应的是哪一组数据。

为每一条线添加标注


如何改变图例框的位置?

        ===============   =============Location String   Location Code===============   ============='best'            0'upper right'     1'upper left'      2'lower left'      3'lower right'     4'right'           5'center left'     6'center right'    7'lower center'    8'upper center'    9'center'          10===============   =============

设置图线的属性



颜色


线型


同理,我们也可以通过这个参数设置网格线的线型


线的粗细


再谈线的颜色

如果我们想不到一个合适的单词来形容自己想要的颜色,其实是可以使用颜色的十六进制

https://www.sioe.cn/yingyong/yanse-rgb-16/

总结

  • 绘制了折线图
plt.plot()
  • 设置了图片的大小和分辨率
fig=plt.figure(figsize=(16,9),dpi=100
)
  • 实现了图片的保存
plt.savefig("../data/fig_size.svg")
  • 设置了x、y轴上的刻度和字符串
"""设置x轴和y轴上的刻度间距"""# y轴刻度间距
_yticks=range(min(y),max(y))
plt.yticks(_yticks)# 调整x轴的刻度# 将x轴上的刻度字符由数字转变为字符串
# _x=list(x)[::10]  # 取步长为10
# _xticks=[f"hello,{i}" for i in _x]
# plt.xticks(_x,_xticks)
"""注意:
当x轴上的刻度是数字的时候,对于plt.xticks()我们只需要传递一个参数,这个参数它是数字,plt.xticks会把这个参数全部绘制在x轴上;
当x轴上的刻度是字符串的时候,我们需要传递两个参数,一个是数字,一个是字符串,我们要将字符串和数字进行一一对应,由于是一一对应的关系,所以说,数字的长度和字符串的长度必须是一样的
"""# 设置x轴上刻度字符为“XX点XX分”
_x=list(x)
_xticks=[f"10点{i}分" for i in range(60)]
_xticks+=[f"11点{i}分" for i in range(60)]
plt.xticks(_x[::10],_xticks[::10],rotation=45)  # 注意保证数字和字符串之间是一一对应的关系
# rotation=90  旋转的度数
# 把数值型数据对应在字符串上
  • 解决了刻度稀疏和密集的问题

# 设置x轴的刻度
# plt.xticks(x)# 设置x轴刻度的间隔
# plt.xticks(range(2,26,1))  # 间隔为1  密集
# plt.xticks(range(2,26,10))  # 间隔为10  稀疏# 设置间隔为0.5  自己传入一个列表
# plt.xticks([0.5*i for i in range(4,49)])
# 感觉有点太密集了  怎么变稀疏呢  取步长
plt.xticks([0.5*i for i in range(4,49)][::3])# plt.xticks(range(25,50))  # 传递一个错误的刻度# 调整y轴的刻度的间隔
# plt.yticks([15,13,14.5,17,20,25,26,26,27,22,18,15])plt.yticks(range(min(y),max(y)+1))
  • 设置了标题、x、y轴的标签
"""给图像添加描述信息"""
plt.xlabel("时间/min")  # 设置x轴的描述信息
plt.ylabel("温度/℃")  # 设置y轴的描述信息
plt.title("10点到12点每分钟的气温变化情况")  # 图的标题
  • 设置了中文字体
# 解决中文乱码
plt.rcParams["font.sans-serif"]=["KaiTi"]
plt.rcParams["font.family"]="sans-serif"
# 解决符号无法显示的问题
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题
  • 在一个图上绘制多个图形
"""x轴数据和y轴数据"""
x=range(11,31)  # 11岁到30岁
y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]  # 自己
y_2 = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]  # 同桌# 在同一张画布上同时绘制出两个图
plt.plot(x,y_1,label="自己",# color="orange",  # 线的颜色color="#00FF00",  # 线的颜色    Lime    酸橙色 #00FF00 0,255,0linestyle="--",  # 线型linewidth=5,  # 粗细)plt.plot(x,y_2,label="同桌",color="#BA55D3",  # MediumOrchid 适中的兰花紫  #BA55D3 186,85,211# color="cyan",linestyle=":",
linewidth=3,)
  • 为不同的图线添加图例
# 在同一张画布上同时绘制出两个图
plt.plot(x,y_1,label="自己",# color="orange",  # 线的颜色color="#00FF00",  # 线的颜色    Lime    酸橙色 #00FF00 0,255,0linestyle="--",  # 线型linewidth=5,  # 粗细)plt.plot(x,y_2,label="同桌",color="#BA55D3",  # MediumOrchid 适中的兰花紫  #BA55D3 186,85,211# color="cyan",linestyle=":",
linewidth=3,)# 让“自己”和“同桌”这两个label在图上显示出来
# 添加图例
plt.legend(loc="lower right",  # 改变图例框的位置
)
# plt.legend()会结合plt.plot中的label参数,将标注显示在图上

以上统统很重要

matplotlib官方文档

https://matplotlib.org/

https://matplotlib.org/api/pyplot_summary.html

对比常用统计图

https://www.cnblogs.com/springionic/p/11147960.html

08【matplotlib】06matplotlib绘制多次图形和不同图形的差异介绍和总结相关推荐

  1. 绘制图形可以使用什么python数据库_用Matplotlib如何绘制3D图形

    Matplotlib是一个Python 2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形. 在上篇中讲述的是如何对图形颜色和线条的填充,而今天给大家带来的是用matp ...

  2. python绘制3d图形-Python基于matplotlib实现绘制三维图形功能示例

    本文实例讲述了Python基于matplotlib实现绘制三维图形功能.分享给大家供大家参考,具体如下: 代码一: # coding=utf-8 import numpy as np import m ...

  3. python绘制三维曲线图_Python基于matplotlib实现绘制三维图形功能示例

    本文实例讲述了Python基于matplotlib实现绘制三维图形功能.分享给大家供大家参考,具体如下: 代码一: # coding=utf-8 import numpy as np import m ...

  4. python画三维图-Python基于matplotlib实现绘制三维图形功能示例

    本文实例讲述了Python基于matplotlib实现绘制三维图形功能.分享给大家供大家参考,具体如下: 代码一: # coding=utf-8 import numpy as np import m ...

  5. python如何画贝塞尔曲线_Python使用matplotlib实现绘制自定义图形功能示例

    本文实例讲述了Python使用matplotlib实现绘制自定义图形功能.分享给大家供大家参考,具体如下: 一 代码 from matplotlib.path importPath from matp ...

  6. python中怎么表示lnx_python – 如何在matplotlib中绘制一个带有代表原始数据的颜色标记的日志归一化图形图...

    我正在使用matplotlib来绘制对数归一化的图像,但是我希望原始图像数据在颜色栏而不是[0-1]间隔中表示.通过使用某种规范化对象,而不是预先转换数据,我得到了一种更加matplotlib的方法, ...

  7. python绘制多个条形图_python – 在Matplotlib中绘制多个直方图 – 颜色或并排条形图...

    问题:在Matplotlib中绘制多个直方图时,我无法区分绘图与另一个绘图 图像问题:** **次要问题:部分左侧标签"计数"不在图像范围内.为什么? 描述 我想绘制3个不同组的直 ...

  8. python怎么画条形图-用Matplotlib如何绘制条形图、直方图和散点图

    Matplotlib是一个Python 2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形. 上一篇我们讲解到Matplotlib 中的图例,标题和标签介绍,今天我们开 ...

  9. python绘制三维曲面图-python中Matplotlib实现绘制3D图的示例代码

    Matplotlib 也可以绘制 3D 图像,与二维图像不同的是,绘制三维图像主要通过 mplot3d 模块实现.但是,使用 Matplotlib 绘制三维图像实际上是在二维画布上展示,所以一般绘制三 ...

最新文章

  1. 机器学习入门(05)— 使用 NumPy 实现 3 层简单神经网络
  2. 四款 5G 版 iPhone 12 齐发,支持北斗系统,你准备好了吗?
  3. 全国大学生智能汽车竞赛-讯飞智慧餐厅
  4. java static关键字_好程序员Java教程分享static关键字的理解
  5. “亚信科技杯”南邮第七届大学生程序设计竞赛之网络预赛 (K L题解)
  6. TechCrunch Disrupt 2011 创业大赛冠军获得者Shaker,酒吧版Facebook
  7. codeforces1440 E. Greedy Shopping
  8. 为什么“how to say”是错的?
  9. 第五章:【UCHome二次开发】模板解析
  10. SM2国密算法证书解析
  11. 加权平均数的例子_加权平均值和算术平均值的区别与公式
  12. Python运行报错most recent call last
  13. Mac 解决终端:-bash: /Users/xxx/.profile: No such file or directory
  14. 自媒体怎么做视频搬运
  15. 微信公众平台python_python搭建微信公众平台
  16. python量化期权_如何20小时搞定Python量化期权实战?
  17. MSP430F5529通过nrf905模块实现无线接受和发送功能
  18. ACM训练方法_该我自己检讨了_By LCY
  19. javaweb操作数据库
  20. SAP PP 第一节 PP后台配置

热门文章

  1. 前端内卷加速破局之道
  2. 微信内部跳转App:wx-open-launch-app
  3. 供应链供需预估-[时间序列]
  4. [激光器原理与应用-12]: 2022年中国激光行业总体市场规模及发展趋势预测分析
  5. 周岁虚岁计算html源码,在excel中如何计算周岁.虚岁以及实际年龄?
  6. 2017-2018学年大连理工大学软件学院数据库考试题目说明
  7. 合理期货回撤率(期货回撤得分)
  8. 云计算有个毛用,下一场大战在这儿
  9. 在php中冒泡排序,php中实现快排与冒泡排序
  10. 2022年十月份钓鱼威胁情报