堆积图--MatplotLib

本文介绍了如何使用Python的Matplotlib库绘制堆积柱形图、条形图和直方图,包括基本图形绘制、数据组织和参数调整,如颜色、填充样式和轴标签设置。此外,还展示了如何处理多数据并列和堆叠直方图,以及数据分析中的数据挖掘示例。
摘要由CSDN通过智能技术生成

绘制堆积柱形图

柱形图的基础绘制参见Bar函数柱形图绘制Barh条形图绘制
堆积图是一种组合式的图形,是将若干图形堆叠起来的统计图形

使用参数 b o t t o m bottom bottom可以使柱形图的柱子向上平移相应的高度。同理对于堆积柱形图,上面的图形只要向上平移第一个图形每根柱子的高度即可,即参数 b o t t o m bottom bottom=第一个图形的柱高数据在这里插入图片描述

# 导入第三方数据库
import matplotlib as mpl
import matplotlib.pyplot as plt

# 字体与负号参数配置
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False

# 产生数据
x = [1, 2, 3, 4, 5]
y = [6, 10, 4, 5, 1]
y1 = [2, 6, 3, 8, 5]

# 绘制图形
plt.bar(x,y,color='cyan',tick_label=['A', 'B', 'C', 'D', 'E'],label='1班',)
plt.bar(x,y1,color='blue',bottom=y,label='2班')

# 设置x,y轴标签
plt.xlabel('测试难度')
plt.ylabel('试卷份数')

# 显示图例
plt.legend()

# 展示图形
plt.show()

结果展示:

在这里插入图片描述

堆积条形图

与堆积柱形图绘制同理,对于堆积条形图,右边的图形只要向右平移第一个图形每根条块儿的宽度即可,即参数 l e f t left left=第一个图形条块儿的宽度数据


# 导入第三方数据库
import matplotlib as mpl
import matplotlib.pyplot as plt

# 字体与负号参数配置
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

# 产生数据
x = [1, 2, 3, 4, 5]
y = [6, 10, 4, 5, 1]
y1 = [2, 6, 3, 8, 5]

# 绘制图形
plt.barh(x, y, color='cyan', tick_label=['A', 'B', 'C', 'D', 'E'], label='1班', )
plt.barh(x, y1, color='blue', left=y, label='2班')

# 设置x,y轴标签
plt.xlabel('测试难度')
plt.ylabel('试卷份数')

# 显示图例
plt.legend()

# 展示图形
plt.show()

结果展示:
在这里插入图片描述

多数据并列柱形图


# 导入第三方数据库
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
# 字体与负号参数配置
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

# 产生数据
x = np.arange(5)
y = [6, 10, 4, 5, 1]
y1 = [2, 6, 3, 8, 5]

bar_width=0.35
# 绘制图形
plt.bar(x, y, width=0.35, color='cyan',
        tick_label=['A', 'B', 'C', 'D', 'E'], label='1班', )
plt.bar(x+bar_width, y1, width=0.35, color='blue', label='2班')

# 设置x,y轴标签
plt.xlabel('测试难度')
plt.ylabel('试卷份数')

# 显示图例
plt.legend()

# 展示图形
plt.show()

2班横轴坐标位置为1班横轴坐标位置+柱子宽度,这是2班每根柱子的中心位置;x轴刻度显示在1班柱体中间位置
在这里插入图片描述

想要x轴刻度标签放在两个柱子的中间位置,使用参数 x t i c k ( ) xtick() xtick()设置x轴标签位置

# 导入第三方数据库
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
# 字体与负号参数配置
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

# 产生数据
x = np.arange(5)
y = [6, 10, 4, 5, 1]
y1 = [2, 6, 3, 8, 5]

bar_width=0.35
tick_labels=['A', 'B', 'C', 'D', 'E']
# 绘制图形
plt.bar(x, y, width=0.35, color='cyan',
        tick_label=tick_labels, label='1班', )
plt.bar(x+bar_width, y1, width=0.35, color='blue', label='2班')

# 设置刻度标签位置
plt.xticks(x+bar_width/2,tick_labels)

# 设置x,y轴标签
plt.xlabel('测试难度')
plt.ylabel('试卷份数')

# 显示图例
plt.legend()

# 展示图形
plt.show()

图形展示
在这里插入图片描述

绘制平行条形图

# 导入第三方数据库
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

# 字体与负号参数配置
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

# 产生数据
x = np.arange(5)
y = [6, 10, 4, 5, 1]
y1 = [2, 6, 3, 8, 5]

bar_width = 0.35
tick_labels = ['A', 'B', 'C', 'D', 'E']
# 绘制图形
plt.barh(x, y, height=0.35, color='cyan', tick_label=tick_labels, label='1班', hatch='/')
plt.barh(x + bar_width, y1, height=0.35, color='blue', label='2班', hatch='//')

# 设置y轴刻度标签位置
plt.yticks(x+bar_width/2, tick_labels)
# 设置x,y轴标签
plt.xlabel('测试难度')
plt.ylabel('试卷份数')

# 显示图例
plt.legend()
# 展示图形
plt.show()

图形展示:
图中可以看出两个条形图的填充样式虽然都是 ′ / ′ '/' /,但是填充密度不同。参数 h a t c h hatch hatch除了可以指定填充样式之外,还可以调整填充密度。符号字符串的符号数量越多,几何图形的密集程度越高。例如:参数 h a t c h hatch hatch可以取值 ′ / ′ '/' /,则 h a t c h = ′ / / / ′ hatch='///' hatch=/// h a t c h = ′ / / ′ hatch='//' hatch=// h a t c h = ′ / ′ hatch='/' hatch=/填充密度依次降低。
在这里插入图片描述

绘制堆积直方图

绘制堆积直方图只需要向函数hist中添加关键字参数 s t a c k e d = T r u e stacked=True stacked=True

# 导入第三方数据库
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
# 字体与负号参数配置
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

# 产生数据
scoreT1 = np.random.randint(0, 100, 100)
scoreT2 = np.random.randint(0, 100, 100)
bins = range(0, 101, 10)
# 绘制图形
plt.hist((scoreT1,scoreT2), bins=bins,stacked=True,
       edgecolor='k', histtype='bar', label=('1班','2班'))

# 设置x,y轴标签
plt.xlabel('测试难度')
plt.ylabel('试卷份数')

# 显示图例
plt.legend()
# 展示图形
plt.show()

图形展示:
在这里插入图片描述
改变参数 h i s t t y p e histtype histtype,设置直方图类型

# 导入第三方数据库
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
# 字体与负号参数配置
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

# 产生数据
scoreT1 = np.random.randint(0, 100, 100)
scoreT2 = np.random.randint(0, 100, 100)
bins = range(0, 101, 10)
# 绘制图形
plt.hist((scoreT1,scoreT2), bins=bins,stacked=True,
       edgecolor='k', histtype='stepfilled', label=('1班','2班'))

# 设置x,y轴标签
plt.xlabel('测试难度')
plt.ylabel('试卷份数')

# 显示图例
plt.legend()
# 展示图形
plt.show()

在这里插入图片描述
当参数 s t a c k e d = F a l s e stacked=False stacked=False(默认值为False),可以绘制并排放置的直方图

# 导入第三方数据库
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
# 字体与负号参数配置
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

# 产生数据
scoreT1 = np.random.randint(0, 100, 100)
scoreT2 = np.random.randint(0, 100, 100)
bins = range(0, 101, 10)
# 绘制图形
plt.hist((scoreT1,scoreT2), bins=bins,stacked=False,
       edgecolor='k', histtype='bar', label=('1班','2班'))

# 设置x,y轴标签
plt.xlabel('测试难度')
plt.ylabel('试卷份数')

# 显示图例
plt.legend()
# 展示图形
plt.show()

在这里插入图片描述

要绘制堆积柱状,你可以使用matplotlib的`bar()`函数。这个函数接受多个参数来控制柱状的显示。例如,你可以传递一个x轴数据列表、一个y轴数据列表和一个标签列表来指定每个柱子的位置、高度和标签。你还可以使用`bottom`参数指定每个柱子的底部位置,从而实现堆积效果。 下面是一个示例代码,展示了如何使用matplotlib绘制堆积柱状: ``` import matplotlib.pyplot as plt # 定义数据 x = [1, 2, 3 # x轴数据 y1 = [4, 5, 6 # 第一个堆积柱子的高度 y2 = [2, 3, 4 # 第二个堆积柱子的高度 # 绘制堆积柱状 plt.bar(x, y1, label='柱子1') plt.bar(x, y2, bottom=y1, label='柱子2') # 添加标签和标题 plt.xlabel('x轴') plt.ylabel('y轴') plt.title('堆积柱状') # 添加例 plt.legend() # 显示形 plt.show() ``` 在这个示例中,我们先定义了x轴的数据列表`x`,然后定义了两个堆积柱状的高度列表`y1`和`y2`。接下来,我们使用`bar()`函数绘制了两个堆积柱状,其中第二个柱子的`bottom`参数指定了它的底部位置。最后,我们添加了标签、标题和例,并通过`show()`函数显示了形。 希望这个示例对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【数据处理】Python matplotlib绘制双柱状以及绘制堆积柱状——保姆级教程](https://blog.csdn.net/weixin_39589455/article/details/127938201)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [迅速上手 Python 画 —— 柱状](https://download.csdn.net/download/weixin_38612095/14855456)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值