python:matplotlib.pyplot绘制散点图(基础一)

1.先读取excel文件,使用scatter()函数绘制简单的散点图,此时很多变量都为默认值

import matplotlib.pyplot as plt
import pandas as pd

# 读取excel文件
file_data = pd.read_excel('data.xls')

# 创建画布
fig = plt.figure(figsize=(16, 8))

# 定义图标名称,横纵坐标名称
plt.xlabel('时间', fontproperties='KaiTi')
plt.ylabel('输出应变量', fontproperties='KaiTi')
plt.title('时间与输出变量关系图', fontproperties='KaiTi')

# 绘制简单的散点图
"""x:设置横轴坐标
    y:设置纵轴坐标"""
plt.scatter(x=file_data['时间'], y=file_data['输出应变量'])

plt.show()
plt.close()

运行结果图 

python:matplotlib.pyplot绘制散点图(基础一)_第1张图片 

 

2.对散点图进行美化,可以设置散点图的形状marker(使用了*形状),点的大小s(即根据点对应的数值大小,对点的大小进行调整。在这里,使用for循环对‘输出应变量’一列的数值存入一个名为size的列表中),颜色c (在这里,使用了random随机生成的数字对颜色进行调整)等

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 读取excel文件
# 读取文件的内容为DataFrame形式
file_data = pd.read_excel('data.xls')

# 创建画布
fig = plt.figure(figsize=(16, 8))

# 定义图标名称,横纵坐标名称
plt.xlabel('时间', fontproperties='KaiTi')
plt.ylabel('输出应变量', fontproperties='KaiTi')
plt.title('时间与输出变量关系图', fontproperties='KaiTi')

# 如果要根据具体的数值来确定散点图中散点的大小,可将具体数值赋值给scatter中的变量s
size = list()
for i in file_data['输出应变量']:
    size.append(i+100)
# 绘制简单的散点图
"""x:设置横轴坐标
    y:设置纵轴坐标
    s:设置散点图中点的大小
    c:设置散点图颜色
    marker:设置散点的形状"""
plt.scatter(x=file_data['时间'], y=file_data['输出应变量'], s=size, c=np.random.randint(0, 50, 20), marker='*')

plt.show()
plt.close()

 运行结果图

python:matplotlib.pyplot绘制散点图(基础一)_第2张图片

 3.设置图例, 默认显示在图的右上角,

方法一,使用label对图例进行设置,在scatter函数中增加label参数,对图例命名,适用于图中只有一类散点图时,此时需要加上plt.legend(),否则图例不能显示

p1 = plt.scatter(x=file_data['时间'], y=file_data['输出应变量'],
                 s=size, c=np.random.randint(0, 50, 20), marker='*', label='line')
plt.legend()

python:matplotlib.pyplot绘制散点图(基础一)_第3张图片

方法二,适用于一个图中有多个形状的散点,分别设置不同的图例

p1 = plt.scatter(x=file_data['时间'], y=file_data['输出应变量'], s=size, c=np.random.randint(0, 50, 20),
                 marker='*', label='line1')
p2 = plt.scatter(x=file_data['时间'], y=file_data['变量4'], s=size, c=np.random.randint(0, 50, 20),
                 marker='o', label='line2')

# 设置图例legend
plt.legend((p1, p2), ('line 1', 'line 2'))
plt.legend(['line1', 'line2'])
# plt.legend()

 python:matplotlib.pyplot绘制散点图(基础一)_第4张图片

关于matplotlib.pyplot的更详细用法:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.html

关于matplotlib.legend的更详细用法:

https://matplotlib.org/stable/api/legend_api.html

你可能感兴趣的:(Python,python)