欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

志伟自学数据分析师(1/7)__7天就业数据分析师__第一天matplotlib(12.30)__一蓑烟雨任平生

程序员文章站 2022-06-28 17:10:11
文章目录前言做一道简单的折线图题,自己敲出来代码,那今天的学习就够了做出一个折线图,显示10点到12点的温度,横坐标显示时间,十分钟一个刻度,纵坐标显示温度,要有标题,要有说明,而且要对比今天温度和昨天温度的差异最终效果如下:一、绘制折线图(plt.plot)第一步:导包第二步:写代码第三步:看效果数据分析的最初第一版的折线图也就出来了,代码注释很多,慢慢体会二、设置图片的大小和分辨率(plt.figure)第一步:写代码第二步:看效果三、实现了图片的保存(plt.savefig)第一步:写代码第二步:看效...


前言

这篇文章笔记很多,注释貌似比代码多,毕竟第一次学习,写的详细一些吧,看不懂的代码多看注释

很久之前就想学习数据分析了,于是准备7天精通一个职业,虽然我不拿这七天学的东西去面试,但是做个总结吧,有兴趣的可以跟我一起进行学习,学完这七天的课程不知道结果会如何,或许会让你找到工作,也或许对你现在的工作有很大用途,废话不多说了,开始正文吧


做一道简单的折线图题,自己敲出来代码,那今天的学习就够了


做出一个折线图,显示10点到12点的温度,横坐标显示时间,十分钟一个刻度,纵坐标显示温度,要有标题,要有说明,而且要对比今天温度和昨天温度的差异


最终效果如下:
志伟自学数据分析师(1/7)__7天就业数据分析师__第一天matplotlib(12.30)__一蓑烟雨任平生


一、绘制折线图(plt.plot)

第一步:导包

from matplotlib import pyplot as plt

这里的as是取别名,这样子后面好用,每次就不需要写pyplot了


第二步:写代码

x = range(120)  # range是无法取步长的,只有列表才可以取步长,所以到后期需要list(x)进行转换
y = [random.randint(25, 30) for i in range(120)]

plt.plot(x, y, label="昨天")  # label是标签的意思 color是颜色的意思 linestyle线条样式:是虚线

# 展示图片
plt.show()

第三步:看效果

志伟自学数据分析师(1/7)__7天就业数据分析师__第一天matplotlib(12.30)__一蓑烟雨任平生

数据分析的最初第一版的折线图也就出来了,代码注释很多,慢慢体会


二、设置图片的大小和分辨率(plt.figure)

第一步:写代码

# 设置尺寸
plt.figure(figsize=(20, 10), dpi=80)

这里的figsize是长款dpi是设置像素,越高越清晰


第二步:看效果

志伟自学数据分析师(1/7)__7天就业数据分析师__第一天matplotlib(12.30)__一蓑烟雨任平生
图拉长了很多


三、实现了图片的保存(plt.savefig)

第一步:写代码

# 存储图片
plt.savefig('./1.png')

后面接路径,绝对路径相对路径都可以

第二步:看效果

志伟自学数据分析师(1/7)__7天就业数据分析师__第一天matplotlib(12.30)__一蓑烟雨任平生
当前路径多了一张图片


四、设置X轴Y轴的字刻度和字符串(plt.xticks)

# 这里显示12个+12个是24个
xx = [f'10点{i}分' for i in list(x)[::10]]
xx += [f'11点{i}分' for i in list(x)[::10]]
print(xx)
plt.xticks(list(x)[::10], xx) ##这里会报错,因为前面是10个,后面是24个
plt.xticks(list(x)[::5], xx) ##这里改为5,120/5就是24个了,就不会报错了

# 五、解决了刻度稀疏和密度的问题(plt.xticks)
# 这里显示60个+60个是120个
xx = [f'10点{i}分' for i in range(60)]
xx += [f'11点{i}分' for i in range(60)]

# 前后两个值要对应,前面多少个,后面就需要多少个
# 一个参数的时候是刻度,数字
# 两个参数的时候前面是数字,后面是字符串,这样对应起来
plt.xticks(list(x)[::10], xx[::10], rotation=45)  # rotation旋转的意思

六、设置了标题,XY轴的label(title,xlabel)

# 添加描述信息
plt.xlabel('时间 (单位:时/分)')
plt.ylabel('温度 (单位:°)')
plt.title('10点到12点的温度变化情况统计图')

# 设置网格线
plt.grid(alpha=0.4)  # alpha透明度的意思0到1之间

# 七、设置了字体(rc,font_manager) ## 第一种方法:
# 设置展示中文字体的第一种方法,只试用于Window和Linuex
# 这段代码在源码中拿就可以了
font = {'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': 'larger'}
# **的意思就是把字典转换成A:B
# matplotlib.rc('font', **font)
# 上面的代码可以写成
matplotlib.rc('font', family='MicroSoft YaHei')

## 第二种方法:
# 设置展示中文字体的第二种方法,只试用于所有系统
font_manager.FontProperties(fname='./本地字体路径')

这里需要注意的是需要导包font_manager


# 八、在一个图上绘制多个图形(plt多次plot即可)
# 10点到12点每分钟的气温
x = range(120)  # range是无法取步长的,只有列表才可以取步长,所以到后期需要list(x)进行转换
y = [random.randint(25, 30) for i in range(120)]
# 设置尺寸
plt.figure(figsize=(20, 10), dpi=80)
plt.plot(x, y, label="昨天", color='orange', linestyle=':')  # label是标签的意思 color是颜色的意思 linestyle线条样式:是虚线
y1 = [random.randint(25, 30) for i in range(120)]
# 如果要看两条线的差异的话,plot两次即可
# 这里的时间是相同的,只有温度不同,座椅只需要修改Y即可
plt.plot(x, y1, label='今天', color='cyan', linestyle='--')  # linestyle线条样式:是点线

纵坐标改变,横坐标不需要改变


# 九、为不同的图形添加图例
# 设置图例
plt.legend(loc=0)  # 这里可以指定图例的位置loc

源码里面有01234567代表的意思,也可以写英文,这里简单点直接写数字了


# 十、代码总和
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager

# 设置展示中文字体的第一种方法,只试用于Window和Linuex
# 这段代码在源码中拿就可以了
font = {'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': 'larger'}
# **的意思就是把字典转换成A:B
# matplotlib.rc('font', **font)
# 上面的代码可以写成
matplotlib.rc('font', family='MicroSoft YaHei')

# 设置展示中文字体的第二种方法,只试用于所有系统
# font_manager.FontProperties(family='MicroSoft YaHei')


# 10点到12点每分钟的气温
x = range(120)  # range是无法取步长的,只有列表才可以取步长,所以到后期需要list(x)进行转换
y = [random.randint(25, 30) for i in range(120)]
# 设置尺寸
plt.figure(figsize=(20, 10), dpi=80)
plt.plot(x, y, label="昨天", color='orange', linestyle=':')  # label是标签的意思 color是颜色的意思 linestyle线条样式:是虚线
y1 = [random.randint(25, 30) for i in range(120)]
# 如果要看两条线的差异的话,plot两次即可
# 这里的时间是相同的,只有温度不同,座椅只需要修改Y即可
plt.plot(x, y1, label='今天', color='cyan', linestyle='--')  # linestyle线条样式:是点线

# 这里显示12个+12个是24个
# xx = [f'10点{i}分' for i in list(x)[::10]]
# xx += [f'11点{i}分' for i in list(x)[::10]]
# print(xx)
# plt.xticks(list(x)[::10], xx) ##这里会报错,因为前面是10个,后面是24个
# plt.xticks(list(x)[::5], xx) ##这里改为5,120/5就是24个了,就不会报错了

# 这里显示60个+60个是120个
xx = [f'10点{i}分' for i in range(60)]
xx += [f'11点{i}分' for i in range(60)]

# 前后两个值要对应,前面多少个,后面就需要多少个
# 一个参数的时候是刻度,数字
# 两个参数的时候前面是数字,后面是字符串,这样对应起来
plt.xticks(list(x)[::10], xx[::10], rotation=45)  # rotation旋转的意思

# 添加描述信息
plt.xlabel('时间 (单位:时/分)')
plt.ylabel('温度 (单位:°)')
plt.title('10点到12点的温度变化情况统计图')

# 设置网格线
plt.grid(alpha=0.4)  # alpha透明度的意思0到1之间

# 设置图例
plt.legend(loc=0)  # 这里可以指定图例的位置loc
# 存储图片
plt.savefig('./1.png')
# 展示图片
plt.show()

学习总结

1 绘制折线图(plt.plot)

2 设置图片的大小和分辨率(plt.figure)

3 实现了图片的保存(plt.savefig)

4 设置X轴Y轴的字刻度和字符串(plt.xticks)

5 解决了刻度稀疏和密度的问题(plt.xticks)

6 设置了标题,XY轴的label(title,xlabel)

7 设置了字体(rc,font_manager)

8 在一个图上绘制多个图形(plt多次plot即可)

9 为不同的图形添加图例


这里还有一些功能并没有具体说明,比如加水印什么的,如果想学习深入的话,可以百度直接复制代码即可,很简单的

第一天的学习就到此结束

志伟自学数据分析师(1/7)__7天就业数据分析师__第一天matplotlib(12.30)__一蓑烟雨任平生

本文地址:https://blog.csdn.net/Jaeger_Java/article/details/111983186