matplotlib导论+绘图要点+气温折线图像代码+多折线图像代码+不同图像之间的对比

机器学习-数据科学库day01,吼吼,我之前把这个看成了matlab,真是醉了!


目录

 

一、 数据分析导论

1.概念

2、数据分析的流程

二、matplotlib

·为什么要学习matplotlib?

·什么是matplotilib?

·matplotlib基本要点

·不同图像之间的对比

·如果需要其他图形,可以在百度搜索matplotlib


一、 数据分析导论

1.概念

什么是数据分析?——用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,一边采取适当行动。

2、数据分析的流程

提出问题—>准备数据—>分析数据—>获得结论—>成果可视化

二、matplotlib

·为什么要学习matplotlib?

1、能够给将数据进行可视化,更直观的呈现;

2、使数据更加可观、更具有说服力

·什么是matplotilib?

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

·matplotlib基本要点

1、绘制折线图——plt.plot

2、设置图片大小和分辨率——plt.figure(figsize(20,8), dip=80)

3、实现了图片的保存——plt.savefigure

4、设置了xy轴上的刻度和字符串——xticks(如果要将刻度转换为中文字符串,必须使得x和_xticks_labels保持一一对应的关系)

5、解决了刻度系数和密集度的问题——xticks/yticks(直接用range的话,刻度无法是小数,只有整数形式,可以强制转换为list以后做推导式或切片操作)

6、设置了标题,xy轴的lable——plt.title/xlabel/ylabel

7、设置了字体——matplotlib模块里面的font_manager 上面的 FontProperties 进行设置,windows系统里的字体通过控制面板进行查找字体,右击字体选择属性即可看到地址和名称以及格式;

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

9、为不同的图形添加图例——第一步在两个折线里面设置label参数,然后通过plt.legend(prop = my_font, loc="(设置位置)")

(一)简单代码

重难点:利用plt.xticks/yticks来把刻度显示成合适的间距

from matplotlib import pyplot as plt

x = range(2, 26, 2)
#数据在x轴的位置,是一个可迭代对象
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15]

plt.figure(figsize=(20, 8), dpi=80)
#figsize表示图片大小,参数是以元组的形式出现的,宽为20,高为8,dpi是图片清晰度,为了保证图片变大以后还可以很清晰



plt.plot(x, y)  #传入x和y,通过plot绘制折线图
#plt.savefig("./sig_size.png")  #将图片保存在当前目录下

'''
当x轴上的刻度值和我们定义的x的值不同时,可以通过xticks进行设置
plt.xticks(x)
细化x轴刻度时
plt.xticks(range(2, 25))
如果想继续细化,利用range(2,25,0.5)是不行的,因为步长只能取整
可以通过列表推导式来生成

'''
_xtick_labels = [i/2 for i in range(4, 49)]
#plt.xticks(_xtick_labels)
#如果觉得太密集,就可以写成plt.xticks(_xtick_labels[::3]),每隔三个取一个
plt.xticks(_xtick_labels[::2])
plt.yticks(range(min(y), max(y)+1))
plt.savefig("./sig_size.png")

plt.show()    #在执行程序的时候展示图形

(二)如何在图像中添加中文描述信息,已经刻度中显示中文字符串的方法

重难点:显示中文描述,利用了matplotlib里面的font_manager函数中的FontProperties方法,定义我们的中文字体

还要注意的是在plt.xticks注意x和_xtick_lables 之间的一一对应关系

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

my_font = font_manager.FontProperties(fname=r'C:\Windows\Fonts\STZHONGS.TTF')

x = range(0, 120)
y = [random.randint(20, 35) for i in range(120)]
#x在0-120的范围内,y在20-35之间随机取值

plt.figure(figsize=(20, 8), dpi=80)

plt.plot(x, y)

#调整x轴的刻度
_x = list(x) #将range范围强制转换为列表的形式
#使得刻度转换成几点几分的形式
_xtick_lables = ["10点{}分".format(i) for i in range(60)]
_xtick_lables += ["11点{}分".format(i) for i in range(60)]

#使得_x和_xtick_lables的步长一样,能够一一对应
plt.xticks(_x[::3], _xtick_lables[::3], rotation=45, fontproperties=my_font)  #rotation表示坐标刻度旋转的度数,但现在还是没办法显示中文
#后面加了fontproperties是为了显示中文字体

#添加描述信息
plt.xlabel("时间", fontproperties=my_font)
plt.ylabel("温度 单位(摄氏度)", fontproperties=my_font)
plt.title("从10点到12点每分钟的气温变化情况", fontproperties=my_font)
plt.savefig("./气温变化图.png")

plt.show()

(三)在同一个图中画多条折线

 重难点:图例——现在plot的时候定义标签的含义,然后在plt.legend函数里面定义prop字体和loc位置

关于折线的参数在plot的时候就可以定义,折线的颜色可以通过百度找到十六进制代码,进行自定义

from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname=r'C:\Windows\Fonts\STZHONGS.TTF')

x = range(11, 31)
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.figure(figsize=(10, 8), dpi=80)
plt.plot(x, y_1, label="自己", color="#DB7093", linestyle="--")  #自定义颜色,查找颜色的十六进制代码
plt.plot(x, y_2, label="同桌", color="#808000", linestyle="-.")   #自定义线条,-表示实现 -- 表示虚线,-.表示点划线,:表示虚线
_xtick_lables = ["{}岁".format(i) for i in range(11, 31)]
plt.xticks(x, _xtick_lables, rotation=45, fontproperties=my_font)

plt.xticks(x)
plt.yticks(range(0, 10))
plt.xlabel("岁数", fontproperties=my_font)
plt.ylabel("交往女朋友的个数 单位(个)", fontproperties=my_font)
plt.title("11岁到30岁交往女朋友走势", fontproperties=my_font)

'''
plt.savefig("./交往女朋友发展趋势.png")
plt.show()
'''
plt.legend(prop=my_font, loc="upper left")
#这样可以把两条线所代表的标签含义显示出来,只有在legend函数里面采用prop来定义字体
#loc是显示的位置,位置如果不传参数的话,默认为右上角

#由于点分布在哪里并不清晰,我们可以通过网格图来进行调整
plt.grid(alpha=0.4)
#alpha是透明度的意思
plt.show()

·不同图像之间的对比

·如果需要其他图形,可以在百度搜索matplotlib

选择example,找到想了解的图像,点击进去有对应的代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值