【前言】 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
plt.bar(x=df_BarChart.loc[:,'省市'],height=df_BarChart.loc[:,'累计值'],color="orange",width=0.5,label='累计值')
plt.xlabel('省市')
plt.ylabel('累计值')
plt.title('各省市售电量累计值', fontsize=12,fontweight='bold')
plt.xticks(df_BarChart.loc[:,'省市'],rotation='45')
plt.ylim([0,60])
plt.tight_layout()
plt.legend()
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())
xticks=np.arange(len(df_groupbar.loc[:,'省市']))
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = False
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='总值')
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
plt.bar(x=0,bottom=df_horizontalBar.loc[:,"省市"],height=0.5,width=df_horizontalBar.loc[:,"第一个月"],orientation='horizontal',color='orange',label='第一个月',alpha=0.5)
plt.xlabel("售电量")
plt.ylabel("省市")
plt.title('各省市3月份分售电量')
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
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
plt.plot(df_linechart.loc[:,'时间'],df_linechart.loc[:,'苹果'],color='red',marker='*',ms=10)
plt.plot(df_linechart.loc[:,'时间'],df_linechart.loc[:,'草莓'],color='yellow',marker='<',ms=10)
plt.plot(df_linechart.loc[:,'时间'],df_linechart.loc[:,'葡萄'],color='purple',marker='<',ms=10)
plt.plot(df_linechart.loc[:,'时间'],df_linechart.loc[:,'沙糖桔'],color='orange',marker='v',ms=10)
for name in [df_linechart.loc[:,'苹果'],df_linechart.loc[:,'草莓'],df_linechart.loc[:,'葡萄'],df_linechart.loc[:,'沙糖桔']]:
for x,y in zip(df_linechart.loc[:,'时间'],name):
plt.text(x=x,y=y,s=str(y),ha='center',va='center',color='green' ,fontsize=12)
plt.show()
效果展示
五、散点图
代码实现
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df_scatter=pd.read_excel('E:\pythonProject\matplotlib各种图表\scatter.xlsx',dtype={'日期':'object'})
print(df_scatter.head())
df_scatter.sort_values(by='日期',inplace=True,ascending=False)
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = False
plt.scatter(df_scatter['日期'],df_scatter['进口矿产总数'],s=df_scatter['进口矿产总数'],marker='o',c=df_scatter['进口矿产总数'])
plt.colorbar()
plt.xlabel('日期')
plt.ylabel('进口矿产总数')
plt.title('散点图')
plt.show()
效果展示
六、直方图
代码实现
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df_hist=pd.read_excel('E:\pythonProject\matplotlib各种图表\hist.xlsx')
print(df_hist.head())
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = False
plt.hist(df_hist.loc[:,'身高'],bins=30,facecolor='orange',edgecolor='red')
plt.show()
效果展示
|