代码已详细注释
(
画图基本步骤
(1)导包;
(2)中文显示;
(3)读入数据;
(4)提取所需列和行数据标签;
(5)设置画布尺寸及分辨率;
(6)设置相关参数。
1-折线图绘制
# -*- coding: utf-8 -*-
"""
Created on Mon Jun 27 22:31:08 2022
@author: Administrator
"""
import numpy as np
import pandas as pd
from pylab import yticks#设置y轴刻度使用
from module import *
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']='SimHei' #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
df=pd.read_excel('D:/Users/Administrator/Desktop/期末论文/主播及其粉丝数.xlsx')
#print(df)
x,y = df['主播'],df['粉丝数']
fig = plt.figure(figsize=(40,20),dpi=240)#画布尺寸
sub = fig.add_subplot()#面向对象画图
plt.xticks(rotation=45)#45度旋转
plt.grid()#网格化
yticks(np.linspace(300,2500,15,endpoint=False))#设置y轴刻度
#第一个参数位起始值,第二个为坐标终止,第三个为分成几分
#plt.text()
for a, b in zip(x, y):
plt.text(a, b, b, ha='center', va='bottom', fontsize=15)#plt.text()方法显示数据纵坐标数据
#plt.text(a, b, "b", ha='center', va='bottom', fontsize=20)
plt.xlabel('主播')#添加横标签
plt.legend('粉丝数')#标签
plt.ylabel('数量(万)')#添加纵标签
plt.title('各大主播及其粉丝数量折线图')#添加图表标题
plt.tick_params(axis='y',
labelsize=12, # y轴字体大小设置
color='r', # y轴标签颜色设置
labelcolor='b', # y轴字体颜色设置
direction='in' # y轴标签方向设置
)
plt.tick_params(axis='x',
labelsize=12, # x轴字体大小设置
color='r', # x轴标签颜色设置
labelcolor='b', # x轴字体颜色设置
direction='in' # x轴标签方向设置
)
sub.plot(x,y,'r.--')#红线点-连接
plt.show()
折线图和柱状图的组合图
# -*- coding: utf-8 -*-
"""
Created on Tue Jun 28 20:15:57 2022
@author: Administrator
"""
import numpy as np
import pandas as pd
from pylab import yticks#设置y轴刻度使用
from module import *
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']='SimHei' #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
df=pd.read_excel('D:/Users/Administrator/Desktop/期末论文/主播作品及其收听数.xlsx')
#print(df)
x,y1,y2 = df['标题'],df['总集数'],df['总收听数']
fig = plt.figure(figsize=(60,20),dpi=440)#画布尺寸及分辨率
plt.xticks(rotation=45)#45度旋转
plt.title('各大主播及其粉丝数量组合图')#添加图表标题
ax1 = fig.add_subplot(111)#面向对象画图
ax1.bar(
x=df['标题'],
height=df['总集数'],
width = 0.8, #柱形图的宽度
color='green', #填充颜色
alpha = 0.8, #透明度,值越小越透明
edgecolor='black', #图形边缘颜色
label='集数')
ax1.set_ylim([0,6000])
#ax1.set_yticks(np.linspace(300,6000,20,endpoint=False))
ax1.set_ylabel('更新总集数',fontsize=20)
ax1.set_title('各大主播及其粉丝数量折线图',fontsize=20)
ax1.set_xticks(df['标题'])
#ax1.set_xtickslabel(df['标题'].astype('str'),rotation=90)
ax2=ax1.twinx()#跟ax1共用一个x轴,组合图使用
ax2.plot(
df['标题'],
df['总收听数'],
#linewidth = 0.6,#折线图的粗细
color='red',
alpha = 0.8,
marker='o',
label='收听数')
ax2.set_ylim([0,80])
ax2.set_ylabel('总收听数',fontsize=20)
fig.legend(loc=(0.85,0.85))#标签位置
plt.show()
运行结果图