4-8 pie与布局
In [1]:
%matplotlib inline
import matplotlib.pyplot as plt
1.pie简单参数:plt.pie(x, explode=None, labels=None……)
属性 | 说明 | 类型 |
---|---|---|
x | 数据 | list |
labels | 标签 | list |
autopct | 数据标签 | %0.1%% 保留一位小数 |
explode | 突出的部分,分离程度 | list |
shadow | 是否显示阴影 | bool |
pctdistance | 数据标签的距离圆心位置 | 0~1 |
labeldistance | 标签的比例 | float |
startangle | 开始绘图的角度 | float |
radius | 半径长 | 默认是1 |
In [2]:
m=51212.
f=40742
m_perc=m/(m+f)
f_perc=f/(m+f)
colors=['navy','lightcoral']
labels=["Male","Female"]
plt.figure(figsize=(5,5))#可控制圆的大小
paches,texts,autotexts=plt.pie([m_perc,f_perc],labels=labels,autopct='%1.1f%%',explode=[0,0.05],colors=colors)#画pie图
for text in texts+autotexts:
text.set_fontsize(20)#设置字体大小
for text in autotexts:
text.set_color('white')#设置字体颜色
2.设置子图布局
In [3]:
#3行3列的子图在0行0列的位置
ax1=plt.subplot2grid((3,3),(0,0))
ax2=plt.subplot2grid((3,3),(1,0))
ax3=plt.subplot2grid((3,3),(0,2),rowspan=3)#rowspan:在当前位置占用了几行
ax4=plt.subplot2grid((3,3),(2,0),colspan=2)#colspan:在当前位置占用了几列
ax5=plt.subplot2grid((3,3),(0,1),rowspan=2)
3.嵌套图
In [4]:
import numpy as np
x=np.linspace(0,10,1000)
y2=np.sin(x**2)
y1=x**2
fig,ax1=plt.subplots()#指定外层图
left,bottom,width,height=[0.22,0.45,0.3,0.35]#中间子图嵌套的位置
ax2=fig.add_axes([left,bottom,width,height])#加上子图
ax1.plot(x,y1)
ax2.plot(x,y2)
Out[4]:
In [5]:
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
#定义柱状图的标签位置定位函数
def autolabel(rects):
for rect in rects:
height=rect.get_height()
ax1.text(rect.get_x()+rect.get_width()/2,1.02*height,
"{:,}".format(float(height)),
ha='center',va='bottom',fontsize=18)
#导入数据
top10_arrivals_countries=['CANADA','MWXICO','UNITED\nKINGDOM',\
'JAPAN','CHIAN','GERMANY','SOUTH\nKOREA',\
'FRANCE','BRAZIL','AUSTRALIA']
top10_arrivals_values=[16.6232,15.3245,3.1534,2.9954,\
2.6454,1.2545,1.6425,1.4253,\
1.3225,1.1354]
arrivals_countries=['WESTERN\nEUROPE','ASIA','SOUTH\nAMERICA',\
'OCEANIA','CARIBBEAN','MIDDLE\nEAST',\
'CENTEAL\nAMERICA','EASTERN\nEUROPE','AFRICA']
arrivals_percent=[36.9,30.4,13.8,4.4,4.0,3.6,2.9,2.6,1.5]
fig,ax1=plt.subplots(figsize=(20,12))#指定外层图
labell=ax1.bar(range(10),top10_arrivals_values,color='blue')#柱状图1
#写注释,柱状图
plt.xticks(range(10),top10_arrivals_countries,fontsize=10)
#画子图
ax2=inset_axes(ax1,width=6,height=6,loc=5)#添加子图小图,loc是具体位置
explode=(0.08,0.08,0.05,0.05,0.08,0.08,0.04,0.04,0.05)#缝隙距离
patchea,texts,autotexts=ax2.pie(arrivals_percent,labels=arrivals_countries,autopct='%1.1f%%',explode=explode)
#设置字体大小,子图
for text in texts+autotexts:
text.set_fontsize(16)
#设置轴位置spines
for spine in ax1.spines.values():
spine.set_visible(False)#指定下面轴不可见
#柱状图label标注数据
autolabel(labell)
此资源来自https://www.cnblogs.com/AI-robort/,博客园的karina512。