如何利用处理好的字典的数据绘制堆叠图

如何利用处理好的字典的数据绘制堆叠图?
其中想绘制以课程为x轴,y轴为不同学院选择该课的人数(如处理好的字典数据)绘制堆叠图

img

img

给你个结构,你参考一下,直接替换为自己的数据应该就可以:
要绘制堆叠图,你可以使用Python中的Matplotlib库。首先,你需要准备好处理好的字典数据,其中键表示课程,值表示不同学院选择该课的人数。

下面是一个示例代码,演示如何使用Matplotlib绘制堆叠图:

import matplotlib.pyplot as plt

# 处理好的字典数据,键为课程,值为不同学院选择该课的人数
data = {
    '课程A': {'学院1': 10, '学院2': 20, '学院3': 15},
    '课程B': {'学院1': 5, '学院2': 10, '学院3': 8},
    '课程C': {'学院1': 15, '学院2': 12, '学院3': 18}
}

# 提取学院和相应的人数
colleges = list(data[list(data.keys())[0]].keys())
num_courses = len(data)
num_colleges = len(colleges)

# 准备堆叠图所需的数据
bottom = [0] * num_courses  # 堆叠图底部的初始值
colors = plt.cm.viridis(range(num_colleges))  # 用于标记学院的颜色

# 绘制堆叠图
fig, ax = plt.subplots()
for i, college in enumerate(colleges):
    values = [data[course][college] for course in data.keys()]
    ax.bar(list(data.keys()), values, bottom=bottom, color=colors[i])
    bottom = [b + v for b, v in zip(bottom, values)]

# 设置图表标题和轴标签
ax.set_title('堆叠图示例')
ax.set_xlabel('课程')
ax.set_ylabel('选择人数')

# 添加图例
ax.legend(colleges)

# 展示图表
plt.show()

这段代码将根据提供的处理好的字典数据绘制堆叠图,其中x轴表示课程,y轴表示不同学院选择该课的人数。每个学院的数据会堆叠在一起,使用不同的颜色进行区分。你可以根据需求自定义修改代码中的数据结构和样式。执行代码后,将会显示堆叠图窗口。

请确保在运行代码之前已安装Matplotlib库(可以使用pip install matplotlib进行安装)并导入所需的包和模块。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7615934
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:X(解释变量)增加一单位标准差,Y(被解释变量)增加多少标准差?
  • 除此之外, 这篇博客: 绘制折线图 ,天气图为例。中的 准备想x,y的数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • x = np.arange(-2np.pi,2np.pi,0.1)
    y1 = np.sin(x)
    y2 = np.cos(x)

  • 您还可以看一下 韦语洋(Lccee)老师的一机一码加密、被破解自动销毁随时授权回收升级系列视频课程课程中的 程序登陆界面与注册界面的跳转小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以通过以下步骤解决该问题:

    1. 导入需要的库和模块:
    import matplotlib.pyplot as plt
    import numpy as np
    
    1. 定义x轴和y轴的数据:
    x_labels = [course1, course2, course3, ...]  # 不同课程的名字
    y_data = np.array([[num1, num2, num3, ...],  # 不同学院选课人数的数据,每行代表一个学院
                       [num4, num5, num6, ...],
                       [num7, num8, num9, ...],
                       ...])
    
    1. 通过循环遍历y_data的每一行,将每个学院选课人数的数据进行累加,得到新的y_data_stacked:
    y_data_stacked = np.cumsum(y_data, axis=0)
    
    1. 绘制堆叠图:
    fig, ax = plt.subplots()
    ax.stackplot(x_labels, y_data_stacked, labels=['学院1', '学院2', '学院3', ...])
    ax.legend(loc='upper left')
    plt.show()
    

    完整代码:

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 定义数据
    x_labels = ['course1', 'course2', 'course3', 'course4']
    y_data = np.array([[100, 200, 150, 120], [50, 80, 70, 90], [80, 100, 90, 120]])
    
    # 将数据进行累加
    y_data_stacked = np.cumsum(y_data, axis=0)
    
    # 绘制堆叠图
    fig, ax = plt.subplots()
    ax.stackplot(x_labels, y_data_stacked, labels=['学院1', '学院2', '学院3'])
    ax.legend(loc='upper left')
    plt.show()