#排序图 它的主要作用就是帮助我们比较变量的大小,典型的排序图有:柱状图,坡度图,哑铃图…
#先来认识柱状图的函数
plt.vlines():vertical line. 就是绘制竖线的函数 #重要的参数 x:横坐标 ymin :条形图的起点,最下方 ymax:y轴的终点,也是长条的最上边
#认识数据
df_raw =pd.read_csv('mpg_ggplot2.csv')
df_raw.head(20)
#注:一个汽车的品牌有不同的车型,每个车型都有自己的里程/加论,所以不同的车型对应着去许多不同的城市里程
#注:图像中确是一个品牌一个柱子,所有车型的均值
df_raw[['cty','manufacturer']].groupby('manufacturer').mean()
#对数据进行排序
df.sort_values('cty',inplace=True)
df
df.reset_index(inplace=True) #将dataframe中的索引恢复到0到n,将文本的原有索引特征恢复成普通的特征
#绘制图像
plt.figure(figsize=(16,10))
plt.vlines(x=df.index,ymin=0,ymax=df.cty,color='firebrick',alpha=0.7,linewidth=20)
fig,ax =plt.subplots(figsize=(10,6),facecolor='white',dpi=80)
ax.vlines(x=df.index,ymin=0,ymax=df.cty,color='firebrick',alpha=0.7,linewidth=10);
#没有画布后续将无法显示
#text函数一次只能只能为一个柱子添加注释,因此需要循坏
for i,cty in enumerate(df.cty):
ax.text(i,cty+0.5#注释所有的横纵坐标
,round(cty,1) #b保留一位小数
, horizontalalignment='center'#相对于我们规定的x和y坐标,文字显示在什么地方
)
#######装饰图像#####################
ax.set_title('城市里程柱状图',fontdict={'size':22})#font字体
ax.set(ylabel='城市里程/加仑',ylim=(0,30))
ax.set_ylabel('城市里程/加仑',fontdict={'size':16})
#############
plt.xticks(df.index #显示在横坐标上的位置,
,df.manufacturer.str.upper()
,rotation=60
,horizontalalignment='right')
##patches.Rectangle
#add_artist
fig,ax =plt.subplots(figsize=(10,6),facecolor='white',dpi=80)
ax.vlines(x=df.index,ymin=0,ymax=df.cty,color='firebrick',alpha=0.7,linewidth=10);
#没有画布后续将无法显示
#text函数一次只能只能为一个柱子添加注释,因此需要循坏
for i,cty in enumerate(df.cty):
ax.text(i,cty+0.5#注释所有的横纵坐标
,round(cty,1) #b保留一位小数
, horizontalalignment='center'#相对于我们规定的x和y坐标,文字显示在什么地方
)
#######装饰图像#####################
ax.set_title('城市里程柱状图',fontdict={'size':22})#font字体
ax.set(ylabel='城市里程/加仑',ylim=(0,30))
ax.set_ylabel('城市里程/加仑',fontdict={'size':16})
#############plt的功能更多
plt.xticks(df.index #显示在横坐标上的位置,
,df.manufacturer.str.upper()
,rotation=60
,horizontalalignment='right'
,fontsize=12);
###############构建长方形######
p1=patches.Rectangle((0.57,-0.005) #长方形所在位置的左下角的坐标,长方形在哪个位置
,width=.33 #长方形的宽(与x轴平行的那一段)
,height=.13 #长方形的高
,alpha=.1#透明度
,facecolor='green'#矩阵的颜色
,transform=fig.transFigure #确保在图像 上方不被子图所遮挡
)
p2=patches.Rectangle((.124,-0.005) #长方形所在位置的左下角的坐标,长方形在哪个位置
,width=.446 #长方形的宽(与x轴平行的那一段)
,height=.13 #长方形的高
,alpha=.1#透明度
,facecolor='red'#矩阵的颜色
,transform=fig.transFigure #确保在图像 上方不被子图所遮挡
)
fig.add_artist(p1) #将多变形添加到子图的fig(画布)
fig.add_artist(p2) #将多变形添加到子图的fig(画布)
plt.show()
绘制图像的Rectangle参照的位置几乎是fig的大小,fig的左下角为(0,0),宽和高的位置依赖于画布设置的比列,画布的最宽的地方和最高的地方分别为1 我们可以通过控制从(0,0)开始,长宽都为一的长方体来探索长方体的大小
#add_patch#只对子图有效