Python-matplotlib绘图

2023-02-27  本文已影响0人  冲锋丘丘人

一、前言

Matplotlib 是一个 Python的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。

二、安装

用pip命令安装第三方库
pip install matplotlib

三、小试牛刀(直线图、折线图)

先绘制个简单的图形,先导入pyplot模块,然后定义点的坐标,再调用plot方法连线绘图,然后设置图形的属性,最后保存和展示图形。
PS:savefig()方法必须放在show()方法前。

from matplotlib import pyplot as plt  # 导入pyplot模块

# 定义点的坐标,即x、y坐标
x = range(10)
y1 = [i * 2 for i in x]
y2 = [i * 3 for i in x]
# 调用plot方法连线绘图
plt.plot(x, y1, linewidth=1, color="orange", marker="o", label="hhhhhhhh")
plt.plot(x, y2, ":ro", label="ssssss")
plt.xlabel("angle")  # 设置x轴名称
plt.ylabel("sine")  # 设置y轴名称
# 设置横纵坐标
plt.xticks([0, 2, 4, 6, 8, 10, 12])
plt.yticks([0, 5, 10, 15, 20, 25])
plt.title('sine wave')  # 设置标题
plt.grid()  # 设置网格模式
plt.legend(["xxxxx", "yyyyyy"], loc="upper left")  # 设置线条标识
# 设置每个点上的数值
for i in range(10):
    plt.text(x[i], y2[i], y2[i], fontsize=12, color="black", style="italic", weight="light", verticalalignment='center',
             horizontalalignment='right', rotation=0)
plt.savefig('demo.jpg')  # 保存图形,此方法必须放在show()前面,否则保存的是一个空白图
# 使用show展示图形
plt.show()

结果:

常用方法介绍

四、饼图

plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1,
        startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False,
        rotatelabels=False, hold=None, data=None)

pie 函数参数详解

import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]  # 设置字体
plt.style.use('fivethirtyeight')
languages = ['JavaScript', 'HTML/CSS', 'SQL', 'Python', 'Java']
popularity = [59219, 55466, 47544, 36443, 35917]

plt.pie(popularity, labels=languages, autopct='%1.1f%%',
        counterclock=False, startangle=90, explode=[0, 0.2, 0, 0, 0])

plt.title('top5 编程语言占比')
plt.tight_layout()  # 自动调整子图的尺寸使充满整个figure
plt.show()

五、柱状图

import matplotlib.pyplot as plt
import random

# 解决中文乱码问题
plt.rcParams["font.sans-serif"] = ['SimHei']
plt.rcParams["axes.unicode_minus"] = False

# 定义x轴、y轴数据
x_data = ["20{}年".format(i) for i in range(16, 22)]
y_data = [random.randint(100, 300) for i in range(6)]

# 绘图
for i in range(len(x_data)):  # 编写渲染使柱状图颜色不同
    plt.bar(x_data[i], y_data[i])

# 添加数据标签
for i in range(len(x_data)):
    plt.text(x_data[i], y_data[i], y_data[i])

plt.title("销量分析")
plt.xlabel("年份")
plt.ylabel("销量")
plt.show()

plt.bar(x,height,[width=0.8][,align='center'][,color='blue'])

并列柱状图

# 导入扩展包
import matplotlib.pyplot as plt
import numpy as np

# 构造数据
y1 = [1, 4, 6, 8, 9, 4, 3, 8]
y2 = [2, 5, 9, 5, 3, 2, 7, 4]
x = np.arange(len(y1))

# 设置柱状图的宽度
width = 0.4

# 绘图
plt.figure(figsize=(8, 4))

plt.bar(x=x, height=y1, width=width, label='Data1')
plt.bar(x=x + width, height=y2, width=width, label='Data2')

# 添加数据标签
for x_value, y_value in zip(x, y1):
    plt.text(x=x_value, y=y_value, s=y_value)

for x_value, y_value in zip(x, y2):
    plt.text(x=x_value + width, y=y_value, s=y_value)

# 添加图标题和图例
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
plt.title('并列柱状图')
plt.legend()
plt.show()
上一篇 下一篇

猜你喜欢

热点阅读