数据分析及matplotlib基础绘图

数据分析:是用适当的方法收集来的大量数据进行分析,帮助人们作出判断,以便采取适当的行动。

数据分析的重要性:python数据科学的基础,是机器学习课程的基础。

一、matplotlib

matplotlib使用的流程:

  1. 明确问题
  2. 选择图形的呈现方式
  3. 准备数据
  4. 绘图和图形完善

1、matplotlib是什么

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

2、matplotlib优势

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

(2)使数据更加客观,更具说服力

3、matplotlib基础要素

模块:from matplotlib import pyplot as plt ——> 导入pyplot模块

注:使用matplotlib前需要先安装 Numpy

from matplotlib import pyplot as plt

def myPlot():
    """
    记录一天内每个两个小时的温度
    :return:
    """
    x = range(2, 26, 2)
    y = [15, 13, 14.5, 17, 20, 26, 26, 24, 22, 18, 15, 13]
    
    #绘图
    plt.plot(x, y)
     
    #展示图形
    plt.show()
    return None

if __name__ == "__main__":
    myPlot()

4、图形定制化API

plt.figure(figsize = (20, 8), dpi = 80)窗口,用于展示图片

1、figure图形的意思,这里指我们画的图,

2、通过实例化一个figure并且传递参数,能够在后台自动使用该figure实例;

3、在图像模糊的时候可以传入dpi参数,让图片更加清晰

4、figsize:指定图片的大小

5、linewidth:指定显示的线的宽度

6、linestyle:指定线条显示的风格,如:虚线 linestyle="--"

plt.plot(x, y, label="标签名",color="颜色",linestyle='--', linewidth=数字, alpha=数字)绘制图形label:指定标签名; color:线条颜色;linestyle:线条风格;linewidth:线条宽度
plt.savefig("存放路径")保存照片

1、可以保存为矢量图格式(SVG),放大无锯齿

注意:保存图片必须放在绘图之后,否则是空白图

plt.xticks(x)/yticks(Y)设置X/Y刻度注:改变步长即可 range(起始,结束,步长)
plt.xlabel(标签名,fontpropreties=...)设置X轴标题

fontpropreties=...,指定字体对象,用于解决中文不支持问题

plt.ylabel(标签名,fontpropreties=...)设置Y轴标题
plt.title(标题名,fontproperties=...)设置图标总的标题
plt.grid(alpha=...)设置图表网格alpha:透明度【0~1】0不明显,1明显
plt.legend(prop=...,loc=...)添加图例,指定当前曲线指代谁prop=..指定使用的字体,loc指定图例的位置
from matplotlib import pyplot as plt

def myPlot():
    """
    记录一天内每隔两个小时的温度
    :return:
    """
    x = range(2, 26, 2)
    y = [15, 13, 14.5, 17, 20, 26, 26, 24, 22, 18, 15, 13]

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

    #绘图
    plt.plot(x, y)

    #设置x轴刻度,2~24,间隔0.5
    _xtick_labels = [i/2 for i in range(4, 49)] #快速生成列表
    plt.xticks(_xtick_labels[::3]) #列表取步长 ::步长

    plt.show()
    return None

if __name__ == "__main__":
    myPlot()

5、matplotlib设置中文显示

为什么无法显示中文?

matplotlib默认不支持中文字符,因为默认的英文字体无法显示汉字

查看Linux/Mac下面支持的字体:

fc-list命令:查看支持的字体

fc-list :lang=zh 命令:查看支持的中文(冒号前面有空格)

如何修改matplotlib的默认字体?

(1)通过matplotlib.rc可以修改,具体方法参见源码(Windows/Linux) 注:ctrl+b跳到源码(pycharm)

(2)通过matplotlib下的font_manager(模块)可以解决(Windows/Linux/mac) 推荐使用

下面就使用第二种做法做演示:

from matplotlib import pyplot as plt
import random
from matplotlib import font_manager

#设置字体的方式,fname指定为系统中可使用字体的路径
my_font = font_manager.FontProperties(fname="C:/Windows/Fonts/HGSS1_CNKI.TTF")

def myPlot():
    """
    绘制从10点到12点两个小时内每分钟的气温情况
    :return: None
    """
    x = range(0, 120)
    y = [random.randint(20, 35) for i in range(120)]

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

    #绘图
    plt.plot(x, y)

    #设置X轴,显示字符串
    _x = list(x)[::10]
    _xtick_labels = ["10点{}分".format(i) for i in range(60)]
    _xtick_labels += ["11点{}分".format(i) for i in range(60)]
    #rotation数据旋转度数
    plt.xticks(_x, _xtick_labels[::10], rotation=45, fontproperties=my_font) #(刻度数,数据数量)取步长,数据和字符串一一对应

    #展示
    plt.show()
    return None

if __name__ == "__main__":
    myPlot()

另附:Windows下查找可用字体的方法:cmd + fonts

6、matplotlib绘制多次图形和不同图形的差异介绍和总结

绘制多次图形,只需要使用plot方法多次,分别指定不同的Y轴信息即可

from matplotlib import pyplot as plt
from matplotlib import font_manager

#统计两个人从11岁到30岁获奖的情况,分析两人的发展走势

my_font = font_manager.FontProperties(fname="C:/Windows/Fonts/HGSS1_CNKI.TTF")
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]
x = range(11, 31)

def myDeal():
    """
    分析发展走势
    :return: None
    """
    #设置图片格式
    plt.figure(figsize=(20, 8), dpi=80)

    #绘图
    plt.plot(x, y_1, label="甲")
    plt.plot(x, y_2, label="乙")

    #设置X轴,显示字符串
    _xtick_labels = ["{}岁".format(i) for i in x]
    plt.xticks(x, _xtick_labels, fontproperties=my_font)
    plt.yticks(range(0, 9))

    #绘制网格
    plt.grid(alpha=0.3)

    #添加图例,展示图例需要加入label
    plt.legend(prop=my_font)

    #展示
    plt.show()
    return None

if __name__ == "__main__":
    myDeal()

复杂图形案例,可以查看matplotlib官网中复杂的案例,有代码实现。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Star星屹程序设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值