【数据分析与挖掘】数据分析学习及实践记录 | part 03-matplotlib常用统计图

本文记录了学习matplotlib的过程,包括如何绘制散点图、条形图及其变体,强调了理解问题、选择图形、准备数据和图形完善的流程。通过实践,探讨了在数据分析中如何利用matplotlib进行数据可视化,同时也提到了ECharts和plotly等更高级的可视化工具。
摘要由CSDN通过智能技术生成

开新坑啦!之前都是晚上七点以后开始学习,今天上午把matplotlib中文显示的问题解决,就开始刷课了。第三部分开启。

老规矩,先上图

01绘制散点图

开篇老师上手一个一周天气的练习。

我跟着标注的数据来源,发现北京历史天气查询_北京历史天气预报_北京历史天气记录_北京历史气温_天气网  并没有这一串数组。只好手输入,这里数据自取,代码完善散点表细节后po出来。


#三月数据
y_3 = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22,
       23]

#十月数据
y_10 = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13,
        12, 13, 6]

 散点图的绘制练习。代码自取,字体文件路径处需要自行修改。

# encoding:utf-8
# from ruby in 2019/09/03 15:43

from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="C:/Windows/Fonts/XXX.ttc -这里放你系统里相放字体的路径+名称+文件类型")

y_3 = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22,
       23]
y_10 = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13,
        12, 13, 6]

x_3 = range(1, 31)
x_10 = range(51, 82)
# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)

# 使用sctter方法绘制散点图 和绘制其他图的唯一区别
plt.scatter(x_3, y_3,label="3月份")
plt.scatter(x_10, y_10,label="10月份")

# 调整x轴的刻度
_x = list(x_3) + list(x_10)
_xtick_labels = ["3月{}日".format(i) for i in x_3]
_xtick_labels += ["10月{}日".format(i) for i in x_10]

plt.xticks(_x[::3], _xtick_labels[::3], fontproperties=my_font,rotation=45)

# 添加描述信息
plt.xlabel("时间",fontproperties= my_font)
plt.ylabel("温度",fontproperties= my_font)
plt.title("三月与十月的温度散点图",fontproperties= my_font)

plt.legend(loc="upper left",prop=my_font)

plt.show()

运行结果如下:

02绘制条形图

这里老师给的是2017的统计,为了回应现在的时间,所以选择2019的统计,数据链接:2019年总票房 - 电影票房排行榜 - 电影票房数据库  

手动把这些排名录下来,还有另一个票房数组。需要自取。

# encoding:utf-8
# from ruby in 2019/09/03 16:32

from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname="C:/Windows/Fonts/XX.ttc 老规矩 自己字体的文件")

a = ["红海行动", "唐人街探案2", "我不是药神", "西虹市首富", "复仇者联盟3:\n无限战争", "捉妖记2", "海王", "毒液:\n致命守护者", "侏罗纪世界2",
     "头号玩家", "后来的我们", "一出好戏", "无双", "碟中谍6:\n全面瓦解", "巨齿鲨", "狂暴巨兽", "超时空同居", "蚁人2:\n黄蜂女现身", "无名之辈", "无问西东"]

b = [36.22, 33.71, 30.75, 25.27, 23.7, 22.19, 19.97, 18.56, 16.82, 13.85, 13.5, 13.44, 12.63, 12.34, 10.43, 9.94, 8.91,
     8.25, 7.88, 7.47]
# print(len(a))
# print(len(b))
plt.figure(figsize=(20, 15), dpi=80)

# plt.bar(range(len(a)), b, width=0.3)
plt.barh(range(len(a)), b, height=0.3, color="orange")

# plt.xticks(range(len(a)), a, fontproperties=my_font, rotation=60)
plt.yticks(range(len(a)), a, fontproperties=my_font)

# plt.savefig("./movierank.png")
plt.grid(alpha=0.3)

plt.show()

运行结果如下,可以看到,三张图,分别设置的。

接下来老师开始了新的练习,主要是做三天的票房,对比。

我的一个思路是:先画三个条形图(分别设red green yellow)X轴应该是电影 Y轴为票房 用颜色区分天数-不同的条形图 这样会更合适

我可以先尝试一下再跟老师,本来今天打算把这个听完就去整理专利的。忽然兴起,想完成这个练习。

尝试了一下,用了len*3操作,还是没法把图分开。没忍住,开始追课了,回家整理或者看专利吧。

 还是没忍住,看了下一节。原来是x轴的设置,代码见下节。

03绘制多次条形图

# encoding:utf-8
# from ruby in 2019/09/03 20:25

from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font = font_manager.FontProperties(fname="C:/Windows/Fonts/msyh.ttc")

a = ["红海行动", "复仇者联盟3:\n无限战争", "毒液:\n致命守护者", "无问西东"]

y_14 = [36.22, 19.97, 12.34, 7.47]
y_15 = [33.71, 30.75, 25.27, 19.97, ]
y_16 = [18.56, 13.44, 12.63, 7.47]

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=(30, 15), dpi=80)

# plt.bar(range(len(a)), b, width=0.3)
plt.bar(range(len(a)), y_14, width=bar_width, label="9月14日")
plt.bar(x_15, y_15, width=bar_width, label="9月15日")
plt.bar(x_16, y_16, width=bar_width, label="9月16日")

plt.xticks(x_15, a, fontproperties=my_font)

plt.legend(loc="upper left", prop=my_font)
plt.title("9月14日|15日|16日 三天票房")
plt.show()

关于条形图更多的应用场景:

  • 频次统计(市场饱和度)
  • 数量统计

05更多的绘图工具的了解

明天再来吧。

讲完这几个基本的图,老师开始总结常见问题及流程。

matplotlib使用的流程总结 :1.明确问题 2.选择图形的呈现方式 3.准备数据 4.绘图和图形完善

在公司的场景应用中,一般不直接用matplotlib去直接展示图,而是使用框架之类的,这里老师举了一个栗子“百度的E-chart”,之前项目遇到过。这里贴链接,感兴趣的小伙伴点进去自看。ECharts Demo

点开一个实例,看看详情。其实之前项目中也有遇见过这之类的需求,用到echart。整体体验来说还是不错的,修改部分代码参数就能展示出比较酷炫的效果。善用框架。

更多的绘图工具 - plotly 可视化工具中的github 相较于matplotlib更加简单。

R语言实现。图形更加漂亮,同时兼容matplotlib和pandas,对着文档写即可。

文档地址:https://plot.ly/python。

好,这部分就跟完了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值