其实这三剑客真的很深奥。有好多我也搞不懂,这里简单画几个图。
其中的数据都是死数据,没有真实依据。只为看效果画图
完整代码如下
# -*- encoding: utf-8 -*-
# 导包
import matplotlib.pyplot as plt
# 定义一个绘图类
class TestPlot(object):
# 初始化方法
def __init__(self,plt):
self.plt = plt
#定义内部属性
# '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 = [99.8,88.8,77.9,67.8]
# 将数据传入
# 专门画横向 barh
my_plt.barh(range(4),price,align='center',color='blue',alpha=0.5)
# 设置标签
my_plt.xlabel('价格')
# 将数据传入Y轴
my_plt.yticks(range(4),['红楼梦','三国演义','西游记','水浒传'])
# 设置上下限制
my_plt.xlim([10,120])
# 设置标题
my_plt.title('四大名著官方售价')
# 绘制
my_plt.show()
# 定义柱状图
def my_bar(self):
my_plt = self.plt
# 定义数据
GDP = [19343.1,28342.2,21342.2,20423.7,22343.2]
my_plt.bar(['重庆','上海','香港','深圳','北京'],GDP,align='center',color='steelblue',alpha=0.8)
# 添加标签
my_plt.ylabel('生成总值')
# 添加标题
my_plt.title('城市GDP对比柱状图')
# 调整刻度范围
my_plt.ylim([10000,30000])
# 绘图
my_plt.show()
# 定义饼状图
def my_pie(self):
my_plt = self.plt
# 定义数据
BeiJing = [8,9,17,23,43]
# 定义标签
label = ['8年以上','2-3年','3-4年','4-5年','5-8年']
color = ['red','green','blue','yellow','purple']
# 对数据进行处理
indic = []
# 使用enumerate方法来添加索引 for item in range(len(BeiJing)):
for index,item in enumerate(BeiJing):
if item == max(BeiJing):
indic.append(0.5)
elif index == 2:
indic.append(0.2)
else:
indic.append(0)
# 传统方法
# for i in BeiJing:
# if i == max(BeiJing):
# # 最大的突出展示
# indic.append(0.5)
# else:
# indic.append(0)
# 将数据传入
my_plt.pie(
# 数据
BeiJing,
# 标签
labels=label,
# 颜色
colors=color,
# 角度
startangle=45,
# 阴影
shadow=True,
# 突出显示
explode=tuple(indic),
# 格式化数字
autopct='%1.1f%%'
)
# 设置标题
my_plt.title('饼图示例-统计北京程序员的工龄占比')
# 绘制
my_plt.show()
# 定义面积图方法
def my_area(self):
# 定义日期时间
data = ['19-03-01,一','19-03-02,二','19-03-03,三','19-03-04,四','19-03-05,五','19-03-06,六']
# 定义数据收入
earn = [156,224,541,622,300,674]
# 支出
pay = [[15,30,27,21,60,15],[11,52,44,84,11,15]]
# 将数据传入方法
self.plt.stackplot(data,earn,pay,colors=['green','yellow','orange'])
# 生成图例
self.plt.plot([],[],color='green',label='收入')
self.plt.plot([],[],color='yellow',label='午餐')
self.plt.plot([],[],color='orange',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()