棒棒图就是条形图与散点图的结合
plt.hlines 重要的参数 y:绘图分y轴 xmin/xmax 条形图的起始点与终止点 color:条形的颜色 plt.scatter 重要的参数 x,y是横纵轴 s:散点的大小 c:散点的颜色 market:散点的形状
import numpy as np
import importlib as mpl
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
import matplotlib.patches as patches
df=pd.read_csv('mtcars.csv')
x=df.loc[:,['mpg']]
df['mpg_z']=(x-x.mean())/x.std()
df['color']='black'
df.sort_values('mpg_z',inplace=True)
df.reset_index(inplace=True,drop=True)
df.head()
plt.figure(figsize=(12,14),dpi=60)
plt.hlines(y=df.index,xmin=0,xmax=df.mpg_z,color=df.color,alpha=0.4,linewidth=1)
plt.scatter(df.mpg_z,df.index,color=df.color,s=300,alpha=0.6)
plt.xlabel('mileage',fontsize=15)
plt.xticks(fontsize=15)
plt.yticks(df.index, df.cars, fontsize=15)
plt.title('Diverging Bars of Car Mileage', fontdict={'size':20})
plt.grid(linestyle='--', alpha=.5)
plt.show()
**
假如我们想强调其中的某一种车,以('fiat x1-9’为例,改变他的颜色以及尺寸)
**
df.loc[df.cars == 'Fiat X1-9', 'color'] = 'darkorange'
plt.figure(figsize=(12,14),dpi=60)
plt.hlines(y=df.index,xmin=0,xmax=df.mpg_z,color=df.color,alpha=0.4,linewidth=1)
plt.scatter(df.mpg_z,df.index,color=df.color,
s=[600 if i=='Fiat X1-9' else 300 for i in df.cars]
,alpha=0.6)
plt.xlabel('mileage',fontsize=15)
plt.xticks(fontsize=15)
plt.yticks(df.index, df.cars, fontsize=15)
plt.title('Diverging lollipop of Car Mileage', fontdict={'size':20})
plt.grid(linestyle='--', alpha=.5)
plt.show()
#添加补丁 patches.Rectangle 重要的参数 xy:补丁左下角的位置坐标 width:补丁的宽度 height:补丁的高度 angle:补丁的角度 fill:是否填充 facecolor:补丁内部的颜色 edgecolor:补丁边框的颜色
import matplotlib.patches as patches
fig ,ax=plt.subplots(figsize=(8,5))
p=patches.Rectangle((.2,.2),width=.2,height=.3
,facecolor='g'
,edgecolor='r'
,alpha=.5
,angle=60
)
ax.add_patch(p);
plt.figure(figsize=(12,14),dpi=60)
plt.hlines(y=df.index,xmin=0,xmax=df.mpg_z,color=df.color,alpha=0.4,linewidth=1)
plt.scatter(df.mpg_z,df.index,color=df.color,
s=[600 if i=='Fiat X1-9' else 300 for i in df.cars]
,alpha=0.6)
p1=patches.Rectangle((1.5,27),width=.8,height=5,facecolor='g' ,edgecolor='r',alpha=.3)
p2=patches.Rectangle((-2.0,-1),width=.5,height=3,facecolor='r' ,edgecolor='g',alpha=.3)
plt.gca().add_patch(p1)
plt.gca().add_patch(p2);
plt.xlabel('mileage',fontsize=15)
plt.xticks(fontsize=15)
plt.yticks(df.index, df.cars, fontsize=15)
plt.title('Diverging lollipop of Car Mileage', fontdict={'size':20})
plt.grid(linestyle='--', alpha=.5)
plt.show()
#####添加注释 plt_annotate 重要的参数 s注释的内容 xy注释的起始位置 xytest:文本的起始位置 xycoords:xy的坐标系(默认被使用注释对象的坐标系,即xycoords=‘data’) arrowprops:用来设置箭头 facecolor:设置箭头的颜色 headlength:箭头的头的长度 headwidth:箭头的宽度 width:箭头的宽度
plt.figure(figsize=(10,8),dpi=60)
plt.annotate('arrow1',xy=(.3,.4),xytext=(.6,.4),xycoords='data',color='g',
fontsize=20,alpha=.8,arrowprops=dict(arrowstyle='-[,widthB=3,lengthB=.8',lw=2,color='r',alpha=.7))
plt.annotate('arrow2',xy=(.2,.6),xytext=(.5,.7),color='w',
bbox =dict(boxstyle='square',fc='b',ec='r',alpha=.7),
fontsize=20,alpha=.8,arrowprops=dict(arrowstyle='->,head_length=1,head_width=1',lw=5,color='g',alpha=.7))
plt.figure(figsize=(12,14),dpi=60)
plt.hlines(y=df.index,xmin=0,xmax=df.mpg_z,color=df.color,alpha=0.4,linewidth=1)
plt.scatter(df.mpg_z,df.index,color=df.color,
s=[600 if i=='Fiat X1-9' else 300 for i in df.cars]
,alpha=0.6)
p1=patches.Rectangle((1.5,27),width=.8,height=5,facecolor='g' ,edgecolor='r',alpha=.3)
p2=patches.Rectangle((-2.0,-1),width=.5,height=3,facecolor='r' ,edgecolor='g',alpha=.3)
plt.gca().add_patch(p1)
plt.gca().add_patch(p2);
plt.annotate('Mercede Models',xy=(0,11),xytext=(1,11),xycoords='data',color='w',fontsize=20,ha='center',va='center',
bbox=dict(boxstyle='square',fc='firebrick',ec='r',alpha=.7),
alpha=.8,arrowprops=dict(arrowstyle='-[,widthB=1.5,lengthB=.8',lw=2,color='steelblue'))
plt.xlabel('mileage',fontsize=15)
plt.xticks(fontsize=15)
plt.yticks(df.index, df.cars, fontsize=15)
plt.title('Diverging lollipop of Car Mileage', fontdict={'size':20})
plt.grid(linestyle='--', alpha=.5)
plt.show()
|