Python数据可视化:简单条形图、帕累托图、堆叠条形图、饼图、环形图

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。

(以下练习题来源于《统计学—基于Python》。联系获取原始数据。)


练习题

为了研究不同地区的消费者对网上购物的满意度,随机抽取东部、中部和西部的1000名消费者进行调查,得到的结果如下表所示。 绘制以下图形并进行分析。

(1)根据东部地区的满意度数据,绘制简单条形图、帕累托图和饼图。

(2)根据东部地区、中部地区和西部地区的满意度数据,绘制并列条形图、推叠条形图和环形图。


Python代码与绘图

(1)根据东部地区的满意度数据,绘制简单条形图、帕累托图和饼图。

# (1)根据东部地区的满意度数据,绘制简单条形图、帕累托图和饼图
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Heiti TC']
plt.rcParams['axes.unicode_minus'] = False
df = pd.read_csv('exercise3_1.csv')

plt.subplots(1, 3, figsize = (20, 5))  # 设置子图和图形大小
# 图(a)东部地区满意度的简单条形图
plt.subplot(131)
plt.barh(y = df['满意度'], width = df['东部'], alpha = 0.6)  # 绘制水平条形图
plt.xlabel('消费者人数', size = 12)
plt.ylabel('满意度', size = 12)
plt.title('(a)东部地区满意度的条形图', size = 15)
plt.xlim(0, 150)  # 设置x轴的范围

# 图(b)东部地区满意度的帕累托图
# 处理数据
df_p = df.sort_values(by = '东部', ascending = False) # 按东部地区消费者人数降序排序数据框
p = 100*df_p['东部'].cumsum()/df_p['东部'].sum() # 计算累计百分比
df_p['累计百分比'] = p
# 绘制直方图
ax = plt.subplot(132)
ax.bar(df_p['满意度'], df_p['东部'], color = 'steelblue')  # 绘制条形图
ax.set_ylabel('消费者人数', size = 12)  # 设置y轴标签
ax.set_xlabel('满意度', size = 12)  # 设置x轴标签
# 绘制帕累托曲线
ax2 = ax.twinx()  # 与条形图共享坐标轴
ax2.plot(df_p['满意度'], df_p['累计百分比'], color = 'C1', marker = 'D', ms = 7) # 绘制折线图
ax2.set_ylabel('累计百分比(%)', size = 12)  # 设置y轴标签
plt.title('(b)东部地区满意度的帕累托图', size = 15)

# 图(c)东部地区满意度的3D饼图
plt.subplot(133)
p1 = plt.pie(df['东部'], labels = df['满意度'], autopct = '%1.2f%%',
             shadow = True,  # 绘制立体带阴影的饼图
             explode = (0.11, 0, 0, 0, 0))  # 设置某一块与中心的距离
plt.title('(c)东部地区满意度的3D饼图', size = 15)

(2)根据东部地区、中部地区和西部地区的满意度数据,绘制并列条形图、推叠条形图和环形图。

#(2)根据东部地区、中部地区和西部地区的满意度数据,绘制并列条形图、推叠条形图和环形图
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Heiti TC']
plt.rcParams['axes.unicode_minus'] = False
df = pd.read_csv('exercise3_1.csv')

plt.subplots(1, 3, figsize = (20, 5))  # 设置子图和图形大小
# 图(a)并列条形图
ax1 = plt.subplot(131) # 设置子图1
df.plot(kind = 'bar', stacked = False, width = 0.8, ax = ax1) # 绘制并列条形图
plt.xlabel('满意度', size = 12)
plt.ylabel('消费者人数', size = 12)
plt.xticks(range(5), df['满意度'], rotation = 0)  # 添加x轴标签并设置旋转角度
plt.title('(a)并列条形图', fontsize = 13, color = 'black')

# 图(b)堆叠条形图
ax2 = plt.subplot(132) # 设置子图2
df.plot(kind = 'bar', stacked = True, width = 0.5, ax = ax2) # 绘制堆叠条形图
plt.xlabel('满意度', size = 12)
plt.ylabel('消费者人数', size = 12)
plt.xticks(range(5), df['满意度'], rotation = 0)  # 添加x轴标签并设置旋转角度
plt.title('(b)堆叠条形图', fontsize = 13, color = 'black')

# 图(c)多样本嵌套环形图
plt.subplot(133) # 设置子图3
colors = ['red', 'yellow', 'slateblue', 'lawngreen', 'magenta', 'green', 'orange', 'cyan', 'pink', 'gold'] # 设置颜色向量
p1 = plt.pie(df['东部'], labels = df['满意度'], autopct = '%1.2f%%', 
            radius = 1, pctdistance = 0.9, # 半径为1,标签距圆心距离为0.9
            colors = colors,
            wedgeprops = dict(linewidth = 1.2, width = 0.3, edgecolor = 'w'))
p2 = plt.pie(df['西部'], autopct = '%1.2f%%', 
            radius = 0.75, pctdistance = 0.85, # 半径为0.75,标签距圆心距离为0.85
            colors = colors,
            wedgeprops = dict(linewidth = 1.2, width = 0.3, edgecolor = 'w'))
p3 = plt.pie(df['中部'], autopct = '%1.2f%%', 
            radius = 0.5, pctdistance = 0.7, # 半径为0.5,标签距圆心距离为0.7
            colors = colors,
            wedgeprops = dict(linewidth = 1.2, width = 0.3, edgecolor = 'w'))
plt.title('(c)多样本嵌套环形图', fontsize = 13, color = 'black')

# plt.tight_layout()


都读到这里了,不妨关注、点赞一下吧!

  • 17
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值