文章目录

  • 前言
  • 一、绘制折线图(plt.plot)
    • 第一步:导包
    • 第二步:写代码
    • 第三步:看效果
      • 数据分析的最初第一版的折线图也就出来了,代码注释很多,慢慢体会
  • 二、设置图片的大小和分辨率(plt.figure)
    • 第一步:写代码
    • 第二步:看效果
  • 三、实现了图片的保存(plt.savefig)
    • 第一步:写代码
    • 第二步:看效果
  • 四、设置X轴Y轴的字刻度和字符串(plt.xticks)
  • 六、设置了标题,XY轴的label(title,xlabel)
  • 学习总结
    • 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 为不同的图形添加图例
        • 这里还有一些功能并没有具体说明,比如加水印什么的,如果想学习深入的话,可以百度直接复制代码即可,很简单的
  • 第一天的学习就到此结束

前言

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

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

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

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

最终效果如下:

一、绘制折线图(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()

第三步:看效果

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

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

第一步:写代码

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

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

第二步:看效果

图拉长了很多

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

第一步:写代码

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

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

第二步:看效果

当前路径多了一张图片

四、设置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 为不同的图形添加图例

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

第一天的学习就到此结束

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