Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
Windows 系统安装 Matplotlib
进入到 cmd 窗口下,执行以下命令:
python -m pip install -U pip setuptools python -m pip install matplotlib
Linux 系统安装 Matplotlib
可以使用 Linux 包管理器来安装:
- Debian / Ubuntu:
sudo apt-get install python-matplotlib
- Fedora / Redhat:
sudo yum install python-matplotlib
Mac OSX 系统安装 Matplotlib
Mac OSX 可以使用 pip 命令来安装:
sudo python -mpip install matplotlib
安装完后,你可以使用 python -m pip list 命令来查看是否安装了 matplotlib 模块。
$ python -m pip list | grep matplotlib matplotlib (1.3.1)
今天要使用类方法画柱状图,饼图,面积图。
# 导包
import matplotlib.pyplot as plt
# 定义一个绘图类
class TestPlot(object):
# 初始化方法
def __init__(self,plt):
self.plt = plt
# 定义内部属性
# 解决中文乱码问题[第二套]
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.family']='sans-serif'
#指定编码
plt.rcParams['axes.unicode_minus'] = False
#定义柱状图
def my_bar(self):
my_plt = self.plt
#定义数据
GDP = [12404.1,13908.5,9386.5,9143.6]
#传入数据
my_plt.bar(['北京','上海','深圳','重庆'],GDP,align='center',color='steelblue',alpha=0.8)
#添加标签
my_plt.ylabel('生产总值')
#添加标题
my_plt.title('四个直辖市GDP大比拼')
#刻度范围
my_plt.ylim([5000,16000])
#绘制
my_plt.show()

# 定义拼图
def my_pie(self):
my_plt = self.plt
# 定义数据
beijing = [17,17,23,43]
# 定义标签
label = ['2-3年','3-4年','4-5年','5,6年']
color = ['red','yellow','blue','purple']
# 将最大值突出展示
indic = []
# 使用ennumberate方法来添加索引 for item in range(len(beijing))
for index,item in enumerate(beijing):
if item == max(beijing):
indic.append(0.5)
elif index == 1:
indic.append(0.2)
else:
indic.append(0)
# for item in beijing:
# if item == max(beijing):
# indic.append(0.1)
# else:
# indic.append(0)
# 将数据传入
my_plt.pie(
# 数据
beijing,
# 标签
labels = label,
# 颜色
colors=color,
# 定义3D图角度
startangle=90,
# 阴影
shadow=True,
# 突出显示
explode=tuple(indic),
# 格式化数子
autopct='%1.1f%%',
)
# 设置标题
my_plt.title('并图绘制-统计北京程序员的工龄占比')
my_plt.show()

# 定义面积图方法
def my_area(self):
# 定义日期
date = ['2019-03-07','2019-03-08','2019-03-09','2019-03-010','2019-03-011']
# 定义数据
# 收入
earn = [156,234,324,354,456]
# 支出
pay = [[15,30,27,43,20],[10,20,25,132,28]]
# 将数据传入方法
my_lit = self.plt
self.plt.stackplot(date,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('面积图样例-统计5天收入支出')
# 显示图例
self.plt.legend()
# 绘制图形
self.plt.show()
if __name__ == "__main__":
# 实例化对象
testplot = TestPlot(plt)
testplot.my_bar()
# testplot.my_area()
# testplot.my_pie()
print(123)

总结:
解决中文乱码的两种方法
第一种:
#导入字体库
from matplotlib.font_manager import FontProperties
#设置本机字体
font = FontProperties(fname="C:/Windows/Fonts/simkai.ttf",size=15)
使用时直接调用:
FontProperties=font
第二种:
# 定义内部属性
# 解决中文乱码问题[第二种]
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.family']='sans-serif'
#指定编码
plt.rcParams['axes.unicode_minus'] = False