matplotlib绘制柱状图、条形图等多种图形 您所在的位置:网站首页 并列柱状图matplotlib matplotlib绘制柱状图、条形图等多种图形

matplotlib绘制柱状图、条形图等多种图形

2024-07-16 16:20| 来源: 网络整理| 查看: 265

【前言】 1、matplotlib实现柱状图,条形图的绘制 2、网上查找了很多博主的资料,发现虽然都可以实现,但是所使用的方法是各种各样的,对于新手而言并不太友好。 3、楼主这里采用的是最简单的方式去实现各种图表,对于有些陌生的关键字会给出解释,并且绘制的过程中会慢慢的增加一些绘图的小技巧。 4、楼主在参考孙兴华的视频之后,在这里进行一个小小的总结。对于想自学的同学来说,可以作为一个参考

一、柱状图

在这里插入图片描述plt.text() 详解 在这里插入图片描述

代码实现

import pandas as pd import matplotlib.pyplot as plt df_BarChart = pd.read_excel(r'E:\pythonProject\matplotlib各种图表\bar_1.xlsx', dtype={'累计值': 'object'}) print(df_BarChart.head()) plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体,解决中文不显示的问题 plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题 # 给定 x,y轴的数据 plt.bar(x=df_BarChart.loc[:,'省市'],height=df_BarChart.loc[:,'累计值'],color="orange",width=0.5,label='累计值') plt.xlabel('省市') # 设置x,y轴的标签 plt.ylabel('累计值') # 设置标题、字体大小、加粗 plt.title('各省市售电量累计值', fontsize=12,fontweight='bold') plt.xticks(df_BarChart.loc[:,'省市'],rotation='45') # 把底部的标签进行倾斜 plt.ylim([0,60]) # 设置y轴的刻度 plt.tight_layout() # 紧凑形布局 # 设置图例与plt.bar() 中的label是对应的 plt.legend() # 精确值 x,y表示在轴中的位置,s表示需要展现的文本,color设置字体颜色,va设置水平的位置,ha设置垂直的距离 for x,y in enumerate(df_BarChart.loc[:,'累计值']): plt.text( x=x,y=y+0.6,s='%d'% y ,color='red', va='center',ha='center' ) plt.show()

效果展示 在这里插入图片描述

柱状图的延深-----分组柱状图

代码实现

import pandas as pd import matplotlib.pyplot as plt import numpy as np df_groupbar=pd.read_excel('E:\pythonProject\matplotlib各种图表\groupbar_2.xlsx',dtype={'累计值,':'object'}) print(df_groupbar.head()) # 使用numpy模块 将x轴数字化,因为你的第二个柱子是在第一个柱子的基础上画的( # 就类似于在第一个柱子的旁边画第二个柱子,所以画第二个柱子的时候需要挪动一个) xticks=np.arange(len(df_groupbar.loc[:,'省市'])) plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体,解决中文不显示的问题 plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题 # 设置两个轴的数据、bottom用来调整上下显示,label用来表示左右,但是需要挪动轴 plt.bar(range(len(df_groupbar.loc[:,'省市'])),df_groupbar.loc[:,'累计值'],width=0.5,color='orange',label='累计值') plt.bar(xticks+0.35,df_groupbar.loc[:,'总值'],width=0.5,color='yellow',label='总值') # 把x轴用汉字显示出来 plt.xticks(range(len(df_groupbar.loc[:,'省市'])),df_groupbar.loc[:,'省市']) plt.xlabel('省市') plt.ylabel('销售量') plt.title('各省市售电量累计值、总值') plt.legend() # 显示精确值【的第一个柱状图】 for x1,y1 in enumerate(df_groupbar.loc[:,'累计值']): plt.text( x=x1, y=y1, s='%d' % y1 ) # 显示精确值【的第二个柱状图】 for x2,y2 in enumerate(df_groupbar.loc[:,'总值']): plt.text( x=x2, y=y2,s='%d' % y2 ) plt.show()

效果展示 在这里插入图片描述

柱状图的延深-----叠加柱状图

过一段时间更新...

二、条形图

需要把:orientation="horizontal",然后x,与y的数据交换,再添加bottom=x,即可水平条形图注意:刻度标签需要垂直居中显示

代码实现

import numpy as np import pandas as pd import matplotlib.pyplot as plt df_horizontalBar=pd.read_excel(r'E:\pythonProject\matplotlib各种图表\horizontalBar.xlsx') print(df_horizontalBar.head()) plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体,解决中文不显示的问题 plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题 # 绘图 用orientation='horizontal'设置条形图、alpha=0.5设置透明度 plt.bar(x=0,bottom=df_horizontalBar.loc[:,"省市"],height=0.5,width=df_horizontalBar.loc[:,"第一个月"],orientation='horizontal',color='orange',label='第一个月',alpha=0.5) # 设置x、y轴标签、标题 plt.xlabel("售电量") plt.ylabel("省市") plt.title('各省市3月份分售电量') #精确值 把x、y轴交换一下 for y1,x1 in enumerate(df_horizontalBar.loc[:,"第一个月"]): plt.text( x=x1+0.5,y=y1,s=x1,ha='center',va='center',color='red') # 设置图例 plt.legend(loc='lower right',ncol=3,fontsize=8) plt.show()

效果展示 在这里插入图片描述

条形图的延深----叠加的条形图

代码实现

import numpy as np import pandas as pd import matplotlib.pyplot as plt df_horizontalBar=pd.read_excel(r'E:\pythonProject\matplotlib各种图表\horizontalBar.xlsx') print(df_horizontalBar.head()) plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体,解决中文不显示的问题 plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题 # 绘制的基本原理在一个柱子的基础上进行第二个柱子的绘制 plt.bar(x=0,bottom=df_horizontalBar.loc[:,"省市"],height=0.5,width=df_horizontalBar.loc[:,"第一个月"],orientation='horizontal',color='orange',label='第一个月') plt.bar(x=df_horizontalBar.loc[:,"第一个月"],bottom=df_horizontalBar.loc[:,"省市"],height=0.5,width=df_horizontalBar.loc[:,"第二个月"],orientation="horizontal",color="yellow",label='第二个月') plt.bar(x=df_horizontalBar.loc[:,"第一个月"]+df_horizontalBar.loc[:,"第二个月"],bottom=df_horizontalBar.loc[:,"省市"],height=0.5,width=df_horizontalBar.loc[:,"第三个月"],orientation="horizontal",color="blue",label='第三个月') plt.xlabel("售电量") plt.ylabel("省市") plt.title('各省市3月份分售电量') #精确值的设置也同理 for y1,x1 in enumerate(df_horizontalBar.loc[:,"第一个月"]): plt.text( x=x1-2,y=y1,s=x1,ha='center',va='center',color='black') for y2,x2 in enumerate(df_horizontalBar.loc[:,"第一个月"]+df_horizontalBar.loc[:,"第二个月"]): plt.text( x=x2-2,y=y2,s=x2,ha='center',va='center', color='black') for y3,x3 in enumerate(df_horizontalBar.loc[:,"第一个月"]+df_horizontalBar.loc[:,"第二个月"]+df_horizontalBar.loc[:,'第三个月']): plt.text( x=x3-2,y=y3,s=y3,ha='center',va='center',color='black') # 设置图例 plt.legend(loc='lower right',ncol=3,fontsize=8) plt.show()

效果展示 在这里插入图片描述

三、饼图

在这里插入图片描述

代码实现

import numpy as pd import pandas as pd import matplotlib.pyplot as plt df_pie = pd.read_excel(r'E:\pythonProject\matplotlib各种图表\pie.xlsx') print(df_pie.head()) plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体,解决中文不显示的问题 plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题 # x-->数据区域,labels-->标签名称,autopct-->>显示百分比,explode-->指定那个模块突出,逆时针 # shadow=True 加一个这个可以使饼图变成3D的效果。 plt.pie(x=df_pie.loc[:,'销售量'],labels=tuple(df_pie.loc[:,'水果名']),autopct='%.2f%%',explode=[0,0,0.25,0,0]) plt.title('水果销量图') plt.show()

效果展示 在这里插入图片描述 在这里插入图片描述

四、折线图

在这里插入图片描述

代码实现

import numpy as pd import pandas as pd import matplotlib.pyplot as plt df_linechart=pd.read_excel(r'E:\pythonProject\matplotlib各种图表\line_chart.xlsx') print(df_linechart.head()) plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体,解决中文不显示的问题 plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题 # marker可以指定数据点的样式,ms表示大小 plt.plot(df_linechart.loc[:,'时间'],df_linechart.loc[:,'苹果'],color='red',marker='*',ms=10) plt.plot(df_linechart.loc[:,'时间'],df_linechart.loc[:,'草莓'],color='yellow',marker='


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有