使用matplotlib绘制掘金内容数据

941 阅读3分钟

一、目的

通过使用matplotlib绘制掘金内容数据,增加matplotlib的熟练度

绘制单图

  • x轴为周期,y轴为数据
  • 设置每条数据的label
  • 添加网格
  • 修改x轴的刻度
  • 添加描述
  • 显示图例
  • 保存图片

按单图的数据绘制多图

二、准备

引入库

这里使用的有matplotlibrandompylab等 安装

pip install matplotlib
pip install pylab

设计步骤

  • 首先准备数据,主要有日期数据,星期数据, 展现数据,阅读数据,点赞数据
  • 其次了解matplotlib的使用流程
  • 首先创建画布
  • 然后绘制画布
  • 之后添加网格
  • 在之后修改x轴刻度
  • 添加描述信息
  • 显示图例
  • 保存图片
  • 图像显示

多样性

根据单图代码编写多图代码

三、代码实现流程

单图

导入依赖库

# 导入库
import matplotlib.pyplot as plt
import random
from pylab import mpl

设置中午字体

# 设置中文字体
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 设置正常显示的符号
mpl.rcParams['axes.unicode_minus'] = False

准备数据

# 准备数据
article_date = ["2022-05-02","2022-05-03","2022-05-04","2022-05-05","2022-05-06","2022-05-07","2022-05-08"]
article_view = [169,181,387,261,180,148,101]
article_digg = [16,9,10,28,10,-3,3,]
article_display = [909,948,1158,1445,1470,903,326]
day_list = ['一','二','三','四','五','六','日']

创建画布,该api有多个属性,figsize:两个参数分别是宽,高,dpi:以每英寸点数为单位的图形分辨率。 还有facecolor背景颜色,edgecolor边框颜色, frameon如果为 False,则禁止绘制图框

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

绘制图像 plt.plot有多个属性:x,y, color, linestyle,label等等

# 绘制图像
plt.plot(article_date, article_display, color="r", linestyle='-.', label="展现数")
plt.plot(article_date, article_view, color="b", linestyle='-.', label="阅读数")
plt.plot(article_date, article_digg, color="g", linestyle='--', label="点赞数")

添加网格

grid的属性:是否可见,linestyle的样式,alpha设置透明度,还有颜色等属性

# 添加网格
plt.grid(True, linestyle='--', alpha=0.5)

修改x轴刻度

# 修改x轴刻度
x_day = ['星期{}'.format(i) for i in day_list]
plt.xticks(article_date[::1],x_day[::1])# 坐标刻度不能直接使用字符串进行修改

添加描述

# 添加描述
plt.xlabel('周期')
plt.ylabel('数量')
plt.title('掘金内容数据')

显示图例

legend有多种类型best 'center right' 'right'

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

图像保存

savefig可以设置路径和图片名称

# 图像保存
plt.savefig('./contentDetail.png')

图像显示

# 图像显示
plt.show()

多图设置

数据相同

创建画布 subplots设置行列数据等

fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(20,8), dpi=100)

绘制图像

axes[0].plot(article_date, article_display, color="r", linestyle='-.', label="展现数")
axes[1].plot(article_date, article_view, color="b", linestyle='-.', label="阅读数")
axes[2].plot(article_date, article_digg, color="g", linestyle='--', label="点赞数")

添加网格

axes[0].grid(True, linestyle='--', alpha=0.5)
axes[1].grid(True, linestyle='--', alpha=0.5)
axes[2].grid(True, linestyle='--', alpha=0.5)

修改刻度

x_day = ['星期{}'.format(i) for i in day_list]
axes[0].set_xticks(article_date[::1])# 坐标刻度不能直接使用字符串进行修改
axes[0].set_xticklabels(x_day[::1])# 坐标刻度不能直接使用字符串进行修改

axes[1].set_xticks(article_date[::1])# 坐标刻度不能直接使用字符串进行修改
axes[1].set_xticklabels(x_day[::1])# 坐标刻度不能直接使用字符串进行修改

axes[2].set_xticks(article_date[::1])# 坐标刻度不能直接使用字符串进行修改
axes[2].set_xticklabels(x_day[::1])# 坐标刻度不能直接使用字符串进行修改

添加描述

axes[0].set_xlabel('周期')
axes[0].set_ylabel('数量')
axes[0].set_title('展现数据')

axes[1].set_xlabel('周期')
axes[1].set_ylabel('数量')
axes[1].set_title('阅读数据')

axes[2].set_xlabel('周期')
axes[2].set_ylabel('数量')
axes[2].set_title('点赞数据')

显示图例

axes[0].legend(loc="best")
axes[1].legend(loc="best")
axes[2].legend(loc="best")

图像保存

plt.savefig('./contentDetail1.png')

图像显示

plt.show()

四、结果展示

单图多数据展示

image.png

多图单数据展示

image.png

图片保存结果

image.png

image.png

不足之处,请留言,望多多指点!!!