python可视化学习(十四)排序图-棒棒图和包点图

#棒棒图和包点图
#除了长相不一样,本质和条形图一摸一样
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
#导入数据
df_raw=pd.read_csv('mpg_ggplot2.csv')
df=df_raw[['cty','manufacturer']].groupby('manufacturer').apply(lambda x:x.mean())
df.sort_values('cty',inplace=True)
df.reset_index(inplace=True)
#绘图#
fig,ax =plt.subplots(figsize=(16,10),facecolor='white',dpi=80)
#画柱子
ax.vlines(x=df.index,ymin=0,ymax=df.cty,color='firebrick',alpha=0.7,linewidth=2);
#画散点图
ax.scatter(x=df.index,y=df.cty+0.3,s=175,color='firebrick',alpha=0.7)
#设置横总坐标的标题
ax.set_title('城市里程数的棒棒图',fontdict={'size':22})#font字体
ax.set(ylabel='城市里程/加仑',ylim=(0,30))
ax.set_ylabel('城市里程/加仑',fontdict={'size':16})
ax.set_xticks(df.index)
ax.set_xticklabels(df.manufacturer.str.upper()
                  #显示在横坐标上的位置,
                 ,rotation=60
                 ,horizontalalignment='right'
                  ,fontsize=12);
#为某一个坐标设置注释
for i,cty in enumerate(df.cty):
    ax.text(i,cty+1#注释所有的横纵坐标
            ,round(cty,1) #b保留一位小数
            , horizontalalignment='center'#相对于我们规定的x和y坐标,文字显示在什么地方
           
           )

在这里插入图片描述
####棒棒图

df_raw=pd.read_csv('mpg_ggplot2.csv')
df=df_raw[['cty','manufacturer']].groupby('manufacturer').apply(lambda x:x.mean())
df.sort_values('cty',inplace=True)
df.reset_index(inplace=True)
###绘制包点图
fig,ax =plt.subplots(figsize=(16,10),facecolor='white',dpi=80)
###绘制横线(而不是竖线)的函数hlines
ax.hlines( y=df.index,
          xmin=11, #为了让虚线布满屏幕,所以从城市里程最小值的一些地方开始
          xmax=26, #最大值的一些高的地方开始
          color='gray',alpha=0.7,linewidth=1,linestyle='dashdot')


#画散点图
ax.scatter(y=df.index,x=df.cty+0.3,s=75,color='firebrick',alpha=0.7)

plt.show()

在这里插入图片描述

###绘制包点图
fig,ax =plt.subplots(figsize=(16,10),facecolor='white',dpi=80)
###绘制横线(而不是竖线)的函数hlines
ax.hlines( y=df.index,
          xmin=11, #为了让虚线布满屏幕,所以从城市里程最小值的一些地方开始
          xmax=26, #最大值的一些高的地方开始
          color='gray',alpha=0.7,linewidth=1,linestyle='dashdot')


#画散点图
ax.scatter(y=df.index,x=df.cty+0.3,s=75,color='firebrick',alpha=0.7)


#装饰图像
ax.set_title('城市里程数的棒棒图',fontdict={'size':22})#font字体
ax.set(ylabel='城市里程/加仑')
ax.set_ylabel('城市里程/加仑',fontdict={'size':16})
ax.set_yticks(df.index)
ax.set_yticklabels(df.manufacturer.str.title(),fontdict={'horizontalalignment':'right','size':20});
ax.set_xlim(10,27)


plt.show()

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值