matplotlib库的学习(个人用)

本文介绍了为什么学习matplotlib,它是如何在Python中用于数据可视化的,包括折线图、散点图、条形图和直方图的基本绘制方法,以及如何对图表进行美化和标注。此外,还提到了matplotlib与其他绘图工具如ECharts和seaborn的对比。
摘要由CSDN通过智能技术生成

matplotlib库的学习(个人用)

为什么要学习matplotlib?

原因

1.能将数据进行可视化,更直观的呈现

2.使数据更加客观、更具说服力

什么是matplotlib?

matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建

matplotlib绘图

最简单的折线图表绘制

from matplotlib import pyplot as plt ->导入pyplot
x = range(2,26,2)#数据在x轴的位置,是一个可迭代对象
y = [15 , 13 , 14.5 , 17 , 20 , 25 , 26 , 26 , 24, 22 , 18 , 15]#数据在y轴的位置,是一个可迭代对象
                   # ->x轴和y轴的数据一起组成了所有要绘制出的坐标
                   # ->分别是(2,15),(4,13),(6,14.5),(8,17).....
plt.plot(x,y) # ->传入x和y,通过plot绘制出折线图
plt.show() # ->在执行程序的时候展示图形

包括x轴,y轴的刻度,以及图形的展示,注意x和y的元素个数要相等

最简单的散点图的绘制

在折线图的基础上,将plt.plot()转变成plt.scatter()其他地方基本相同

最简单的条形图的绘制

在折线图的基础上,将plt.plot()转换成plt.bar(x,y,width = )width传入条形粗细(这是竖形的条形图)

在折线图的基础上,将plt.plot()转换成plt.barh(x,y,height = )height传入条形粗细(这是横状的条形图)

其他与折线图基本相同

最简单的直方图的绘制

在折线图的基础上,将olt.plot()转换成plt.hist(a,num_bins,density = 1(或者True))a为一组数据,num_bins为组数,如果传入density = 1(或者True),则变成频率直方图

把数据分为多少组进行统计

组数要适当,太少会有较大的统计误差,大多规律不明显

组数:将数据分组,当数据在100个以内时,按数据多少常分5-12组

组距:指每个小组的两个端点的距离

组数 = 极差 / 组距

plt.xticks(x_label)—弹幕看见的,不知道有什么用

对图形进行润色加工

1.设置图片大小(想要一个高清无码大图)

plt.figure(figsize=(21,11),dpi=80)在绘制图表的代码前加上这行代码,figsize能选定长和宽,dpi是清晰度,越高越好

2.保存到本地

plt.savefig("./t1.png(或者svg)")在绘制图表的代码后加上这行代码,括号内传入图片保存的地址,可以保存为svg这种矢量图格式,放大不会有锯齿(网页可用)

3.描述信息,比如x轴和y轴表示什么,这个图表示什么

plt.xlabel("",fontproperties = my_font)传入x轴表示什么,还可以再传入size = n 定义字体大小

plt.ylabel("",fontproperties = my_font)传入y轴表示什么,还可以再传入size = n 定义字体大小

plt.title("",fontproperties = my_font)传入表头,还可以再传入size = n 定义字体大小

4.调整x或者y的刻度的间距以及如果包含字符串如何处理

plt.xticks() 指定x轴刻度的数目与取值,传入的是一个列表

plt.yticks() 指定y轴刻度的数目与取值,传入的是一个列表

  • xticks用法详解(yticks与之相同)

    • plt.xticks(a,b,rotation = )a为控制列表的刻度,b为lebel,表示在该刻度上显示的字符串,所以a和b需要一一对应,rotation传入一个数字n,表示将该刻度旋转n°
  • 如果传入的字符串是中文,因matplotlib不支持中文,所以需要额外设置

    • from matplotlib import font_manager
      my_font = font_manager.FontProperties(fname = "D:\Python_learning\pythonProject\msyh.ttc",size = )#传入字体的路径,参考地址是我安装的微软雅黑,size传入字体的大小,可以用阿拉伯数字表示
      plt.xticks(fontproperties = my_font) #设置字体
      
  • plt.grid(alpha = )可以用来绘制列表的表格,传入0-1的参数,数字越大,表线越清晰,不传入默认为1

  • 添加图例:

    • plt.plot(x,y1,label = "自己")#label传入的字符串即为图例的文字(?怎么表达,就是线条旁边的文字)
      plt.plot(x,y2,label = "同桌")
      plt.legend(prop = matplotlib_Chinese.my_font,loc=)#注意这里是prop,使得图例支持中文;loc决定图例的位置,可以是数字或字符串,直接查看源码即可
      

    ​ 注意:图例的绘制必须要在plt.plot后面

5.线条的样式(比如颜色,透明度等)

  • 线条颜色: color = "orange"插入位置可以是plot之后,color = “…”
  • 线条风格: linestyle = ''插入位置同上
    • 实线: -
    • 虚线、破折线: –
    • 点划线: -.
    • 点虚线,虚线: :
    • 留空或空格,无线条
  • 线条粗细: linewidth = 数字同上
  • 透明度: alpha = 范围为0-1

6.给图片添加一个水印(防伪,防止盗用)

plt.text(x, y, s)

其中x,y表示传入点的x和y轴坐标。s表示字符串。
需要注意的是,这里的坐标,如果设定有xticks、yticks标签,则指的不是标签,而是绘图时x、轴的原始值。

因为参数过多,不再一一解释,根据代码学习其用法。

ha='center’表示垂直对齐方式居中,fontsize=30表示字体大小为30,rotation=-25表示旋转的角度为-25度。c设定颜色,alpha设定透明度。
va表示水平对齐方式

from matplotlib import pyplot as plt
plt.text(20,3, '蛇神出品', ha='center', fontsize=30, rotation=-25, c='gray', alpha=0.4,fontproperties=matplotlib_Chinese.my_font)

7.标记出特殊的点(比如告诉别人最高点和最低点在哪里)

添加注释 plt.annotate()
添加注释。注释即对图像中某一位置的解释,可以用箭头来指向。
添加注释使用的是plt.annotate()方法

其语法中的常用参数如下

plt.annotate(str,xy,xytext,xycoords,arrowcoords)

其中str即注释要使用的字符串,即注释文本
xy指被注释的坐标点
xytext指注释文本要写在的位置

xycoords是被注释的点的坐标系属性,即以什么样的方式描述该点的坐标。设置值默认为"data",即用(x,y)坐标来描述。其他可以选择的设置值如下,其中figure指的是整个画布作为一个参考系。而axes则表示仅对于其中的一个axes对象区域。
arrowprops是一个字典,用来设置箭头的属性。写在这个字典之外的参数都表示的是注释文本的属性。
字典内可以设置的值有

设置值 描述
width 箭头的宽度(非头部)
headwidth 箭头头部的宽度
headlength 箭头头部的长度
facecolor 箭头的颜色
shrink 箭头两端收缩的百分比(占总长)
? 任何matplotlib.patches.FancyArrowPacth中的关键字
关于这些参数的进一步解释:其中箭头的总长度先是通过被注释点位置坐标 与 注释文本位置坐标 所决定的,可以通过调节参数arrowprops中的shrink键来进一步调节箭头的长度,shrink表示将箭头缩短的长度占总长度(被注释点位置坐标 与 注释文本位置坐标 决定的长度)的百分比。当不设定shrink时,shrink默认为0,即不缩短。当shrink很大,接近1时,其效果等同于不缩短。

代码示例:

plt.annotate('最低价', (x,y),(x,y), xycoords='data',arrowprops=dict(facecolor='r', shrink=0.1), c='r',fontsize=15)

8.matplotlib官方网址(有一些图形的代码可以直接copy):官网

各种常用统计图的对比

折线图:

以折线的上升或下降来表示统计数量的增减变化的统计图

特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)

直方图:

由一系列高度不等的纵向条纹或线段表示数据分布的情况。

一般用横轴表示数据范围,纵轴表示分布情况。

特点:绘制连续性的数据,展示一组或者多组数据的分布状况(统计)

条形图:

排列在工作表的列或行中的数据可以绘制到条形图中。

特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计)

散点图:

用两组数据构成多个坐标点,考察坐标点的分布,判断两变量

之间是否存在某种关联或总结坐标点的分布模式。

特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

其他绘图工具(前端框架)

[百度ECharts](百度ECharts (ipkd.cn))

plotly 画图工具中的github

seaborn

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值