Python可视化Matplotlib-折线图、散点图

目录

 

1. 什么是Matplotlib

2. 实现一个最简单的Matplotlib画图 

3.折线图

4.散点图


1. 什么是Matplotlib


matplotlib是专门用于开发2D图表(包括3D图表),以渐进、交互式方式实现数据可视化。使用python对matplotlib库操作使得对图形的显现极为方便。

可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。

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


2. 实现一个最简单的Matplotlib画图 


2.1 matplotlib.pyplot模块
matplotlib.pytplot包含了一系列类似于matlab的画图函数。所以第一步需要导入matplotlib包。

import matplotlib.pyplot as plt

2.2 图形绘制流程
图形绘制最基本的三步可以概括为:创建画布,绘制图像,显示图像。

3.折线图

 

3.1.创建画布 – plt.figure()


plt.figure(figsize=(), dpi=)
    figsize:指定图的长宽
    dpi:图像的清晰度
    返回fig对象

3.2.绘制图像 – plt.plot(x, y)
plt.plot(x, y)    
    以折线图为例

3..3显示图像 – plt.show()

3,.4 举例:展现江苏一周的天气,比如从星期一到星期日的天气温度如下

import matplotlib.pyplot as plt
import random

plt.figure(figsize=(20, 8), dpi=100)
x = range(7)
y_jiangsu = [random.uniform(10, 25) for i in x]  # 取10-24的随机数

plt.plot(x, y_jiangsu)
plt.show()

3 .5完善原始折线图 — 给图形添加辅助功能
需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~25度

折线图是数据分析中非常常用的图形。其中,折线图主要是以折线的上升或下降来表示统计数量的增减变化的统计图。用于分析自变量和因变量之间的趋势关系,最适合用于显示随着时间而变化的连续数据,同时还可以看出数量的差异,增长情况。

特点:能够显示数据的变化趋势,反映事物的变化情况。
Matplotlib 中绘制折线图的函数为 plot() ,使用语法如下:

matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)

常用参数及说明:

常用参数及说明
参数接收值说明默认值
x,yarray表示 x 轴与 y 轴对应的数据
colorstring表示折线的颜色None
markerstring表示折线上数据点处的类型None
linestylestring表示折线的类型-
inewidth数值线条粗细:linewidth=1.=5.=0.31
alpha0~1之间的小数表示点的透明度None
labelstring数据图例内容:label=‘实际数据’1None

 

 

 

 

 

 

 

 

 

3 .5完善原始折线图 — 给图形添加辅助功能
需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~25度

3.5.1 准备数据并画出初始折线图
import matplotlib.pyplot as plt
import random

# 画出温度变化图

# 0.准备x, y坐标的数据
x = range(60)
y_jiangsu = [random.uniform(15, 25) for i in x]

# 1.创建画布
plt.figure(figsize=(20, 8), dpi=80)

# 2.绘制折线图
plt.plot(x, y_jiangsu)

# 3.显示图像
plt.show()

3.5.2 添加自定义x,y刻度
plt.xticks(x, **kwargs)

x:要显示的刻度值

plt.yticks(y, **kwargs)

y:要显示的刻度值

# 构造x轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
# 构造y轴刻度
y_ticks = range(40)

# 修改x,y轴坐标的刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])
 

3.5.3 中文显示问题解决
如果没有解决过中文问题的话,绘制的图像会出现中文无法显示的问题。

解决方案二:
在Python脚本中动态设置matplotlibrc,这样也可以避免由于更改配置文件而造成的麻烦,具体代码如下:

from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]

有时候,字体更改后,会导致坐标轴中的部分字符无法正常显示,例如无法显示负号问题,此时需要更改axes.unicode_minus参数:

# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
 

3.5.4 添加网格显示
为了更加清楚地观察图形对应的值

plt.grid(True, linestyle='--', alpha=0.5)

3.5.5添加描述信息
添加x轴、y轴描述信息及标题

通过fontsize参数可以修改图像中字体的大小

plt.xlabel("时间")
plt.ylabel("温度")
plt.title("江苏中午11点0分到12点之间的温度变化图示", fontsize=20)

3.5.6 图像保存
# 保存图片到指定路径
plt.savefig("test.png")

4.2. 在一个坐标系中绘制多个图像
4.1.2 多次plot
需求:再添加一个城市的温度变化
收集到北京当天温度变化情况,温度在1度到3度。怎么去添加另一个在同一坐标系当中的不同图形,其实很简单只需要再次plot即可,但是需要区分线条。

# 增加北京的温度数据
y_beijing = [random.uniform(1, 3) for i in x]

# 绘制折线图
plt.plot(x, y_jiangsu)
# 使用多次plot可以画多个折线
plt.plot(x, y_beijing, color='r', linestyle='--')

4.1.2 显示图例
注意:如果只在plt.plot()中设置label还不能最终显示出图例,还需要通过plt.legend()将图例显示出来。
# 绘制折线图
plt.plot(x, y_jiangsu, label="江苏")
# 使用多次plot可以画多个折线
plt.plot(x, y_beijing, color='r', linestyle='--', label="北京")

# 显示图例
plt.legend(loc="best")

完整代码:

# 0.准备数据
x = range(60)
y_jiangsu = [random.uniform(15, 25) for i in x]
y_beijing = [random.uniform(1,3) for i in x]

# 1.创建画布
plt.figure(figsize=(20, 8), dpi=100)

# 4.1.3.绘制图像
plt.plot(x, y_jiangsu, label="江苏")
plt.plot(x, y_beijing, color="r", linestyle="--", label="北京")

# 1 添加x,y轴刻度
# 构造x,y轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(35)

# 刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])

# 2 添加网格显示
plt.grid(True, linestyle="--", alpha=0.5)

# 3 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点--12点某城市温度变化图", fontsize=20)

#4 图像保存
plt.savefig("./test.png")

# 5 添加图例
plt.legend(loc="best")

# 4.1.3.图像显示
plt.show()

4.散点图

是数据分析中非常常用的图形。用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。

特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

Matplotlib 中绘制散点图的函数为 scatter() ,使用语法如下:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)
4.1.散点图基本用法
import matplotlib.pyplot as plt
import random

# 4.1.0.准备数据
x = range(60)
y_jiangsu = [random.uniform(15, 25) for i in x]
y_beijing = [random.uniform(5,18) for i in x]

# 4.1.1.创建画布
plt.figure(figsize=(20, 8), dpi=100)

# 4.1.2.绘制图像
plt.scatter(x,y_jiangsu, s=100, c='deeppink', marker='o', label = "江苏")
plt.scatter(x,y_beijing, s=100, c='darkblue', marker='+', label = "北京")

#4.2.1 刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])

#4.2.2 添加网格显示
plt.grid(True, linestyle="--", alpha=0.5)

# 4.2.3 添加描述信息
plt.xlabel("时间", fontsize=15)
plt.ylabel("温度", fontsize=15)
plt.title("中午11点--12点某城市温度变化图", fontsize=20)

# 4.2.4 图像保存
plt.savefig("./test.png")

# 4.2.5 添加图例
plt.legend(loc="best")

# 4.3.图像显示
plt.show()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值