常用图表的绘制
1.绘制折线图
Matplotlib绘制折线图主要使用plot函数
import pandas as pd
import matplotlib.pyplot as plt
df1 = pd.read_excel('data.xls')
x1=df1['姓名']
y1=df1['语文']
y2=df1['数学']
y3=df1['英语']
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
plt.rcParams['xtick.direction'] = 'out' #x轴的刻度线向外显示
plt.rcParams['ytick.direction'] = 'in' #y轴的刻度线向内显示
plt.title('语数英成绩', fontsize='18')
plt.plot(x1, y1, label='语文', color='r', marker='p')
plt.plot(x1, y2, label='数学', color='g', marker='.', mfc='r', ms=8, alpha=0.7)
plt.plot(x1, y3, label='英语', color='b', linestyle='-.', marker='*')
plt.grid(axis='y') #显示网格关闭y轴
plt.ylabel('分数')
plt.yticks(range(50, 150, 10))
plt.legend(['语文', '数学', '英语'])
plt.show()
输出结果
参数说明:
mfc:标记的颜色
ms:标记的大小
mec:标记边框的颜色
alpha:透明度
2.绘制柱形图
绘制柱形图主要使用bar函数
matplotlib.pyplot.bar(x, height, width, bottom=None, *, align='center', data=None, **kwargs)
height:柱子的高度
width:柱子的宽度,默认0.8
bottom:可选参数,柱形图的y坐标
align:对齐方式
使用5行代码绘制简单的柱形图
import matplotlib.pyplot as plt
x=[1, 2, 3, 4, 5, 6]
height = [10, 20, 30, 40, 50, 60]
plt.bar(x,height)
plt.show()
2.1基本柱形图
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('books.xlsx')
plt.rcParams['font.sans-serif']=['SimHei']
x=df['年份']
height = df['销售额']
plt.grid(axis='y', which='major') #设置虚线网格
plt.xlabel('年份')
plt.ylabel('线上销售额')
plt.title('销售额分析图')
plt.bar(x, height, width=0.5, align='center', color = 'b', alpha=0.5)
for a, b in zip(x, height):
plt.text(a, b, format(b,','), ha='center', va='bottom', fontsize=9, color='b', alpha=0.9)
#设置每个柱子的文本标签,'format(b,',')'格式化销售额为千位分隔符格式
plt.legend('销售额')
plt.show()
2.2多柱形图
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('books.xlsx', sheet_name='Sheet2')
plt.rcParams['font.sans-serif']=['SimHei']
x=df['年份']
y1=df['京东']
y2=df['天猫']
y3=df['自营']
width = 0.25
plt.ylabel('线上销售额')
plt.title('销售额分析图')
plt.bar(x, y1, width = width, color='darkorange')
plt.bar(x+width, y2, width = width, color = 'deepskyblue')
plt.bar(x+2*width, y3, width = width, color = 'g')
plt.legend(['京东', '天猫', '自营'])
plt.show()
输出结果
3.绘制直方图
主要使用hist函数
matplotlib.pyplot.hist(x, bins=None, range=None, density=None, bottom=None, histtype='bar', align='mid', log=False, color=None, label=None, stacked=False, normed=None)
density:显示频率统计结果,默认None
log: y坐标轴是否选择指数刻度
stacked:是否堆积状图。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('grade1.xls')
plt.rcParams['font.sans-serif']=['SimHei']
x=df['得分']
plt.xlabel('分数')
plt.ylabel('学生数量')
plt.title('学生成绩分布直方图')
plt.hist(x, bins=range(0, 151, 25), facecolor='blue', edgecolor='black', alpha=0.7)
plt.show()
4.绘制饼形图
主要使用pie函数
matplotlib.pyplot.pie()
参数:
labels:每一块饼形图外侧显示的说明文字
explode:每一块饼形图离中心的距离
autopct:设置饼图百分比,可以使用格式化字符串或format函数。如'%1.1f'保留小数点的后一位
import matplotlib.pyplot as plt
x = [2, 5, 12, 70, 2, 9]
plt.pie(x, autopct='%1.1f%%')
plt.show()
4.1基础饼状图
import pandas as pd
from matplotlib import pyplot as plt
df1 = pd.read_excel('data2.xls')
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
plt.figure(figsize=(5,3)) #设置画布大小
labels = df1['省']
sizes = df1['销量']
#设置饼形图每块的颜色
colors = ['red', 'yellow', 'slateblue', 'green','magenta','cyan','darkorange','lawngreen','pink','gold']
plt.pie(sizes, #绘图数据
labels=labels,#添加区域水平标签
colors=colors,# 设置饼图的自定义填充色
labeldistance=1.02,#设置各扇形标签(图例)与圆心的距离
autopct='%.1f%%',# 设置百分比的格式,这里保留一位小数
startangle=90,# 设置饼图的初始角度
radius = 0.5, # 设置饼图的半径
center = (0.2,0.2), # 设置饼图的原点
textprops = {'fontsize':9, 'color':'k'}, # 设置文本标签的属性值
pctdistance=0.6)# 设置百分比标签与圆心的距离
# 设置x,y轴刻度一致,保证饼图为圆形
plt.axis('equal')
plt.title('2020年1月各省销量占比情况分析')
plt.show()
输出