Python3:matplotlib的基本demo(折线图,直方图,柱状图,饼图,散点图)

1.简介

由于本人前面学习了matplotlib,完成了一些简单的demo,所以现在想要将所有的图形画一遍,用于巩固个人所学!

2.折线图

 折线图,曲线图
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-10, 10, 1000)
# y = np.sin(x)
y = x * x
plt.figure()
plt.plot(x, y)
plt.show()

在这里插入图片描述

2.1 使用oop方式同时画出两个图

# oop的思想完成画图的操作
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['KaiTi']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.figure()

fig, (axes1, axes2) = plt.subplots(nrows=1, ncols=2)
axes1.plot([1, 2, 3, 4, 5, 6], color="r", linestyle="-.", label="红线")
axes1.set_title("第一个图")
# 设置当前x轴以及y轴的label
axes1.set_xlabel(xlabel="x轴")
axes1.set_ylabel(ylabel="y轴")
# 设置显示昂前的legend
axes1.legend()
# 设置当前的网格
axes1.grid(True, linestyle='-.', alpha=0.5)

axes2.plot([2, 4, 6, 8], color="b", linestyle="--", label="蓝线")
axes2.set_title("第二张图")
# 设置当前第二张图的刻度
axes2.set_xticks([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
axes2.set_yticks([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
axes2.legend()
# 开启刻度
axes2.minorticks_on()
plt.show()

在这里插入图片描述
其实这个oop方式画出两个图,直接找到调用的方法,然后查询文档就可以写出来

3.直方图

# 直方图的简单的demo

# 直方图与当前的柱状图不一样,一个是有间隔并且x轴的是一个准确的值,直方图的值为区间
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['KaiTi']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

plt.figure()
x_date = [22, 87, 5, 43, 56, 73, 55, 54, 11, 20, 51, 5, 79, 31, 27]
bins = [0, 20, 40, 60, 80, 100]
plt.hist(x_date, bins, density=True)
# plt.yticks(range(min(x_date), max(x_date), 10))
plt.xticks(range(min(bins), max(bins) + 5, 5))
plt.show()

在这里插入图片描述

4.柱状图

# 画出柱状图
import matplotlib.pyplot as plt
import random

plt.rcParams['font.sans-serif'] = ['KaiTi']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.figure()
month_days = 31
x = [i for i in range(1, month_days)]
y = [random.randrange(20, 41) for i in range(1, month_days)]
plt.bar(x, y, color="r", label="金额")
plt.minorticks_on()
plt.title("一个月的消费情况")
plt.xlabel("一个月(天)")
plt.ylabel("消费金额(元)")
plt.legend()
# plt.xticks(x)
# plt.yticks([i for i in range(0, 41)])
plt.show()

在这里插入图片描述

4.1 多颜色的柱状图

# 画出柱状图
import matplotlib.pyplot as plt
import random

plt.rcParams['font.sans-serif'] = ['KaiTi']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.figure()
month_days = 5
x = [i + 1 for i in range(1, month_days + 1)]
y = [random.randrange(20, 41) for i in range(1, month_days + 1)]
plt.bar(x, y, label="金额", color=["r", "y", "b", "g", "c"])
# plt.minorticks_on()
plt.title("一周的消费情况")
plt.xlabel("一周(天)")
plt.ylabel("消费金额(元)")
plt.legend()
plt.xticks(x, ["星期{0}".format(i + 1) for i in range(0, month_days + 1)])
plt.grid( linestyle="-.", alpha=0.5)
plt.show()

在这里插入图片描述

4.2 可以比较的柱状图

# 画出柱状图
import matplotlib.pyplot as plt
import random

plt.rcParams['font.sans-serif'] = ['KaiTi']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.figure()
month_days = 5
x = [i for i in range(1, month_days + 1)]
y = [random.randrange(20, 41) for i in range(1, month_days + 1)]
plt.bar(x, y, label="本周", width=0.3, color="r")
plt.bar([i + 0.2 for i in x], [i + random.randrange(1, 10) for i in y], label="上周", width=0.3, color="g")
# plt.minorticks_on()
plt.title("本周和上周的消费情况")
plt.xlabel("同比")
plt.ylabel("消费金额(元)")
plt.legend()
plt.xticks([i + 0.05 for i in x], ["星期{0}".format(i + 1) for i in range(0, month_days + 1)])
plt.grid(linestyle="-.", alpha=0.5)
plt.show()

在这里插入图片描述

5.饼图

# 用于绘制饼图

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['KaiTi']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

plt.figure()
dataList = [10, 12, 15, 18, 9, 25]
dataLabel = ["水", "零食", "水果", "生活用品", "外卖", "电影"]

plt.pie(dataList, labels=dataLabel, colors=["r", "y", "g", "b", "c", "m"], autopct="%1.2f%%")
plt.legend()
plt.title("一天的消费情况")
# 将当前的图形变成圆形,默认为椭圆
plt.axis("equal")

plt.show()

在这里插入图片描述

6.散点图

# 散点图的画法
import matplotlib.pyplot as plt
import random

plt.rcParams['font.sans-serif'] = ['KaiTi']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False
plt.figure()
month_days = 31
x = [i for i in range(1, month_days)]
y = [random.randrange(20, 40) for i in range(1, month_days)]
plt.scatter(x, y)
plt.xlabel("一个月")
plt.ylabel("消费金额")
plt.title("一个月的中餐的消费情况")
plt.show()

在这里插入图片描述

7.总结

1.画折线图的时候使用plt.plot()方法

2.画直方图的时候使用plt.hist()方法

3.画柱状图的时候使用plt.bar()方法

4.画饼图的时候使用plt.pie()方法

5.画散点图的时候使用plt.scatter()方法

以上纯属个人见解,如有问题请联系本人!

发布了215 篇原创文章 · 获赞 39 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45492007/article/details/103653071