# 导包
import matplotlib.pyplot as plt
# 定义一个绘图类
class TestPlot(object):
# 初始化赋值
def __init__(self,plt):
self.plt = plt
#定义内部属性
#解决中文乱码问题(第二种,第一种在d6中)
# ‘font.sans-serif‘ 是matplotlib的内置key
plt.rcParams[‘font.sans-serif‘] = [‘SimHei‘]
plt.rcParams[‘font.family‘]=‘sans-serif‘
#指定编码
plt.rcParams[‘axes.unicode_minus‘] = False
# 定义横向条形图
def my_barh(self):
my_plt = self.plt
# 定义价格
price = [40.7,55,66,42.3]
# 将数据传入
my_plt.barh(range(4),price,align=‘center‘,color=‘skyblue‘,alpha=0.5)
# 设置标签
my_plt.xlabel(‘价格‘)
# 将数据传入y轴
my_plt.yticks(range(4),[‘红楼梦‘,‘三国演义‘,‘西游记‘,‘水浒传‘])
# 设置上下限制
my_plt.xlim([10,80])
my_plt.title(‘四大名著‘)
my_plt.show()
# 定义柱状图
def my_bar(self):
my_plt =self.plt
# 定义数据
GDP = [11313.3,14131.3,14553.5,23452.6]
# 传入数据
my_plt.bar([‘唐山‘,‘邢台‘,‘石家庄‘,‘邯郸‘],GDP,align=‘center‘,color =‘steelblue‘,alpha = 0.8)
my_plt.ylabel(‘生产总值‘)
my_plt.title(‘河北省GDP大比拼‘)
# 刻度范围
my_plt.ylim([5000,25000])
my_plt.show()
def my_pie(self):
my_plt = self.plt
# 定义数据
xingtai = [44,22,16,18]
# 定义标签
label = [‘2-3年‘,‘3-4年‘,‘5-6年‘,‘6年以上‘]
color = [‘red‘,‘skyblue‘,‘yellow‘,‘pink‘]
indic = []
# 使用enumerate方法来添加索引
for index,item in enumerate(xingtai):
if item == max(xingtai):
indic.append(0.5)
elif index == 1:
indic.append(0.3)
else:
indic.append(0)
# if item == max(xingtai):
# indic.append(0.1)
# else:
# indic.append(0)
my_plt.pie(
# 数据
xingtai,
# 标签
labels=label,
# 颜色
colors=color,
# 角度
startangle=90,
# 阴影
shadow=True,
# 突出显示
explode=tuple(indic),
# 格式化数字
autopct=‘%1.1f%%‘,
)
# 设置标题
my_plt.title(‘饼图示例-统计邢台工龄占比‘)
my_plt.show()
# 定义面积图方法
def my_area(self):
# 定义日期区间
date = [‘2019.3.1‘,‘2019.3.2‘,‘2019.3.3‘,‘2019.3.4‘,‘2019.3.5‘,‘2019.3.6‘]
# 定义数据
# 收入
earn = [313,344,222,111,414,212]
# 支出
pay = [[15,44,33,56,33,77],[33,22,11,13,42,19]]
self.plt.stackplot(date,earn,pay,colors=[‘skyblue‘,‘yellow‘,‘red‘])
# 生成图例
self.plt.plot([],[],color=‘skyblue‘,label=‘收入‘)
self.plt.plot([],[],color=‘yellow‘,label=‘午餐‘)
self.plt.plot([],[],color=‘red‘,label=‘晚餐‘)
# 设置标题
self.plt.title(‘面积图例,统一六天收入‘)
self.plt.legend()
self.plt.show()
if __name__ == "__main__":
# 实例化一个对象
testplot =TestPlot(plt)
testplot.my_area()
# testplot.my_bar()
# testplot.my_pie()
# testplot.my_barh()
以上全都是内置图形 ,还可以有扩展别的图形,例如小提琴图形。
首选要下载一个 seaborn 包
下载方式:pip install seaborn
下载之后利用此代码,就可以生成小提琴形状的比例了。
# 导包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
if __name__ == "__main__":
# 读取数据集
df = pd.read_excel(‘test.xlsx‘,‘sheet1‘)
print(df)