数据科学库——matplotlib

matplotlib

为什么学习matplotlib

能将数据进行可视化,更直观的呈现
使数据更加客观,具有说服力

基础绘图

axis指的就是x轴或者y轴

from matplotlib import pyplot as plt
##从2开始 到26截止(不包含26),步长为2
## range(start,stop,step)
x=range(2,26,2)
y=[14,21,22,23,24,18,17,19,20,23,24,21]
##通过plot方法画出折线图 如果是俩个折现图 就用俩次plot
# label 设置图例 color设置颜色 linestyle 设置线的风格
#linewidth 设置线条粗细 alpha设置透明度
plt.plot(x,y)
plt.show()

在这里插入图片描述

设置图片大小(宽20,高8)

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

存储图片(放在绘制的操作后面)

plt.savefig("./fig_size.png")

设置x轴刻度 设置y轴刻度

plt.xticks(x)
plt.yticks(range(min(y),max(y)+1))

调整x轴刻度为非数字

_x=list(x)
_xtick_labels=["10点{}分".format(i) for i range(60)]
_xtick_labels+=["11点{}分".format(i) for i range(60)]
#步长为3 rotation旋转的度数
plt.xticks(x[::3],_xtick_labels[::3],rotation=90)

matplotlib不支持中文显示,需要设置

#查看系统中所有的字体
fc-list
#查看系统中支持的中文字体
fc-list:lang=zh

windows和linux的设置字体方式

import matplotlib
 font = {'family' : 'MicroSoft YaHei',
              'weight' : 'bold',
              'size'   : 'larger'}
matplotlib.rc("font",**font)

另外一种方式设置字体

from matplotlib import font_manager
my_font=font_manager.FontProperties(fname="字体路径.ttc")
...
plt.xticks(x[::3],_xtick_labels[::3],rotation=90,fontproperties=my_font)

添加描述信息

plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度",fontproperties=my_font)
plt.title("10点到12点每分钟的气温变化情况",fontproperties=my_font)
#设置网格 alpha设置透明度 
plt.grid(alpha=0.4)

绘制散点图

绘制3月份每天的气温

y_3=[21,23,24,16,19,18,17,21,22,19,20,24,19,18,20,21,23,24,16,19,18,17,21,22,19,20,24,19,18,20,21]
x=range(1,32)
plt.scatter(x,y_3)

示例图
在同一张图中绘制3月份和10月份的气温(数据是自己编的)

y_3=[21,23,24,16,19,18,17,21,22,19,20,24,19,18,20,21,23,24,16,19,18,17,21,22,19,20,24,19,18,20,21]
x_3=range(1,32)

y_10=[20,23,21,19,12,17,19,26,26,16,26,27,29,28,20,25,23,14,26,29,28,27,20,23,29,25,20,18,28,24,28]
x_10=range(51,82)
plt.scatter(x_3,y_3)
plt.scatter(x_10,y_10)
# 展示
plt.show()

在这里插入图片描述
调整x轴刻度 使用plt.xticks()进行参数的设置

_x=list(x_3)+list(x_10)
_xtick_labels=["3月{}日".format(i) for i in x_3]
_xtick_labels+=["10月{}日".format(i-50) for i in x_10]
plt.xticks(_x,_xtick_labels)
#设置步长,设置旋转角度,设置字体可以显示中文,
plt.xticks(_x[::3],_xtick_labels[::3],rotation=45,fontproperties=my_font)

在这里插入图片描述
添加图例,修改scatter

plt.scatter(x_3,y_3,label="3月份")
plt.scatter(x_10,y_10,label="10月份")
plt.legend(loc="upper left",prop=my_font)

再添加相应的x轴,y轴,标题信息
在这里插入图片描述

绘制条形图

(一)绘制竖着的条形图 使用bar()
a=[“战狼2”,“速度与激情8”,“电影3”,“电影4”]
b=[12.12,23.23,12,34,23,45]

plt.bar(range(len(a)),b)
plt.xticks(range(len(a)),a)
plt.show()

在这里插入图片描述

(二)绘制横着的条形图 使用barh()

plt.barh(range(len(a)),b,height=0.3)
plt.yticks(range(len(a)),a)
plt.show()

在这里插入图片描述

通过之前上面提到的方法,进行设置图形大小,显示中文,调整线条,调整颜色,绘制网格等等。

from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="/System/Library/Fonts/Hiragino Sans GB.ttc")


a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]
b_16 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
b_14 = [2358,399,2358,362]

bar_width = 0.2

x_14 = list(range(len(a)))
x_15 =  [i+bar_width for i in x_14]
x_16 = [i+bar_width*2 for i in x_14]

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

plt.bar(range(len(a)),b_14,width=bar_width,label="9月14日")
plt.bar(x_15,b_15,width=bar_width,label="9月15日")
plt.bar(x_16,b_16,width=bar_width,label="9月16日")

#设置图例
plt.legend(prop=my_font)

#设置x轴的刻度
plt.xticks(x_15,a,fontproperties=my_font)
#省略设置title xlabel ylabel等代码
plt.show()

在这里插入图片描述

绘制直方图

基本绘图使用hist()方法,代码如下:

from matplotlib import pyplot as plt
a=[131,  98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115,  99, 136, 126, 134,  95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117,  86,  95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123,  86, 101,  99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140,  83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144,  83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137,  92,121, 112, 146,  97, 137, 105,  98, 117, 112,  81,  97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112,  83,  94, 146, 133, 101,131, 116, 111,  84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]
#将数据分成20组
plt.hist(a,20)
plt.show()

在这里插入图片描述

在这里插入图片描述

#设置组数
d=3 #组距等于3
num_bins=(max(a)-min(a))//d#整除
plt.hist(a,num_bins)
#设置x轴刻度 max(a)+d显示最后一个刻度
plt.xticks(range(min(a),max(a)+d,d))
plt.grid()
plt.show()

在这里插入图片描述

matplotlib使用流程

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

matplotlib更多图形样式

参考官网文档,网址如下:
https://matplotlib.org/gallery/index.html.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Z小超爱学习

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

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

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

打赏作者

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

抵扣说明:

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

余额充值