基本绘图示例,以及解决matplotlib中文乱码的问题

版权声明:欢迎读阅 https://blog.csdn.net/weixin_44266137/article/details/88342154

这篇文章讲解的很详细。大家参考

https://blog.csdn.net/dgatiger/article/details/50414549

另附上我写得代码

# -*- 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_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()


# 不喜轻喷

猜你喜欢

转载自blog.csdn.net/weixin_44266137/article/details/88342154
今日推荐