5-1 复杂条图(复杂条图、线图与面积图)

带误差线的条图

当直条用于显示样本统计量时,往往需要加绘相应指标的可信区间。

seaborn.barplot(

x, y, hue : names of variables in data
data : DataFrame
order, hue_order : 分类变量/hue变量各类别取值的绘图顺序

可信区间计算:
ci = 95 : float or “sd” or None, 希望绘制的可信区间宽度
n_boot = 1000 : 计算CI时的bootstrap抽样次数。
units : 用于确定抽样单元大小的变量。

误差条格式:
errcolor = ‘0.26’ : CI线段的颜色,matplotlib color
errwidth : CI线段的粗细,float
capsize : 误差条顶端的宽度,占直条绘图区的比例,float
)

sns.barplot(x = ccss.s4, y = ccss.s3)

在这里插入图片描述

sns.barplot(x = ccss.s4, y = ccss.s3, color = 'c',
            errcolor = 'b', errwidth = '2', capsize = .1)

在这里插入图片描述

# 如何不绘制CI
sns.barplot(x = ccss.s4, y = ccss.s3, ci = None)
plt.xlabel("S4:教育程度")
plt.ylabel("S3:年龄均值")

在这里插入图片描述

用直条表示中位数、标准差等特殊统计量

https://docs.scipy.org/doc/numpy-1.14.5/reference/routines.statistics.html

import numpy as np

sns.barplot(x = ccss.s4, y = ccss.s3, estimator = np.median)

在这里插入图片描述

sns.barplot(x = ccss.s4, y = ccss.s3, estimator = np.std)

在这里插入图片描述

分组条图

sns.barplot(x = ccss.s4, y = ccss.s3, hue = ccss.s2)

在这里插入图片描述

# 存在嵌套分组
sns.barplot(x = ccss.Qs9, y = ccss.s3, hue = ccss.Ts9)

在这里插入图片描述

# 存在嵌套分组时不调整直条宽度
sns.barplot(x = ccss.Qs9, y = ccss.s3, hue = ccss.Ts9, dodge = False)

在这里插入图片描述

堆积条图

堆积条图在matplotlib中没有命令直接实现,但可以通过重叠作图方式加以绘制:

方法一:先绘制全部类别的的累积直条,然后依次绘制n-1、n-2…个类别的累积直条,最终形成堆积条图的效果。
方法二:利用plt.plot()的bottom参数,依次将新类别的直条叠加在已有直条上方。

上述方法二更常用,且结合Pandas的汇总功能和seabon模块的绘图功能,实现堆积条图已经非常方便。

# 利用Pandas的汇总功能生成所需汇总数据
tmpdf = pd.crosstab(index = ccss.s0, columns = ccss.s4)
tmpdf

在这里插入图片描述

# 取出所需的汇总行
tmpdf.loc[['上海']]

在这里插入图片描述

# 取出所需的汇总行(序列格式)
tmpdf.loc['上海']

在这里插入图片描述

# 分三次使用seaborn绘制三个类别的直条,并依次叠加
sns.barplot(data = tmpdf.loc[['上海']], color = 'b', label = '上海')
sns.barplot(data = tmpdf.loc[['北京']], bottom = tmpdf.loc['上海'], 
            color = 'c', label = '北京')
# 注意bottom参数需要累加已有的所有直条类别高度
sns.barplot(data = tmpdf.loc[['广州']], 
            bottom = tmpdf.loc['北京'] + tmpdf.loc['上海'], 
            color = 'y', label = '广州')
plt.legend()

在这里插入图片描述

# 使用循环程序自动生成图形
tmpdf = pd.crosstab(index = ccss.s0, columns = ccss.s4)
colorstep0 = 1/len(tmpdf.index)
for i in range(len(tmpdf.index)):
    if i == 0:
        colorstep = colorstep0 / 2 # 避免最终出现纯白色直条
        sns.barplot(data = tmpdf.loc[[tmpdf.index[i]]], 
                    color = str(colorstep), label = tmpdf.index[i])
        base = tmpdf.loc[tmpdf.index[i]]
    else:
        sns.barplot(data = tmpdf.loc[[tmpdf.index[i]]],
                    color = str(colorstep), bottom = base, 
                    label = tmpdf.index[i])
        base = base + tmpdf.loc[tmpdf.index[i]]
    colorstep = colorstep + colorstep0 
plt.legend()

在这里插入图片描述

# 使用sns.histplot()近似绘制堆积条图(实际上是堆积直方图)
# 但是该函数无法指定order或者row_order参数(因为不存在真正的分类轴)
sns.histplot(data = ccss, x = 's4', hue = 's0', multiple="stack",
            hue_order = ['广州', '上海', '北京'])

在这里插入图片描述

百分条图

基本绘制思路和堆积条图相同,但需要将数据计算为相应的百分比。

python中没有为多选题专门提供分析/绘图功能,需要自行完成所需指标的汇总计算。

pd.crosstab(index = ccss.s0, columns = ccss.s4, normalize = "columns")

在这里插入图片描述

tmpdf = pd.crosstab(index = ccss.s0, columns = ccss.s4, 
                    normalize = "columns")
colorstep0 = 1/len(tmpdf.index)
for i in range(len(tmpdf.index)):
    if i == 0:
        colorstep = colorstep0 / 2
        sns.barplot(data = tmpdf.loc[[tmpdf.index[i]]], 
                    color = str(colorstep), label = tmpdf.index[i])
        base = tmpdf.loc[tmpdf.index[i]]
    else:
        sns.barplot(data = tmpdf.loc[[tmpdf.index[i]]],
                    color = str(colorstep), bottom = base, 
                    label = tmpdf.index[i])
        base = base + tmpdf.loc[tmpdf.index[i]]
    colorstep = colorstep + colorstep0 
plt.legend()

在这里插入图片描述

# 使用sns.histplot()近似绘制百分条图(实际上是百分直方图)
# 但是该函数无法指定order或者row_order参数(因为不存在真正的分类轴)
sns.histplot(data = ccss, x = 's4', hue = 's0', multiple="fill",
            hue_order = ['广州', '上海', '北京'])

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,您需要一个爬取实时在线数据并进行可视化处理的Python项目,其中包含十种以上不同的数据可视化形,如词云、柱状、饼、气泡、热力、趋势、直方、雷达、色块、漏斗、和弦面积、折线图、密度,等高线图、矢量场流线图、棉棒、哑铃、甘特、人口金字塔、漏斗、桑基、树状、华夫饼,并且需要使用中文注释。 这是一个比较复杂的项目,需要您具备一定的Python编程基础和数据可视化经验。您可以按照以下步骤进行开发: 1. 确定要爬取的实时在线数据来源,例如某个网站的API接口或者爬虫程序。 2. 使用Python的requests库获取数据,并使用json库解析返回的JSON格式数据。您需要考虑如何处理异常情况,例如网络连接失败或者返回数据格式错误等。 3. 将数据存储到本地,例如使用Python的pandas库将数据保存到CSV文件中。 4. 使用Python的matplotlib库进行数据可视化。您可以根据需求选择不同的形类型,并使用中文注释说明形的含义和数据来源。 5. 为了实现更高级的数据可视化效果,您可能需要使用一些其他的Python库,例如wordcloud库实现词云、seaborn库实现高级统计形等。 6. 最后,您需要将所有的代码整合在一起,并进行测试和调试,确保程序的稳定性和正确性。 希望这些信息能够帮助您开始开发这个项目。如果您有任何问题或者需要更多的帮助,请随时与我联系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

juicy-hua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值