import matplotlib.pyplot as plt import numpy as np # 数据准备 data = { "常规演出": { "年场次": 300, "年观众(万)": 15, "满意度": 90, "社媒话题(万)": 50 }, "游客互动": { "面具参与": 5000, "服饰打卡(万)": 200*365/10000, # 日均200×365日换算 "唱腔参与": 8000, "好评率": [92, 70] # 面具课和服饰分享率 }, "节日展演": { "春节观众": 800*3*3, # 最高日观众×天数×场次 "端午观众": 800*3*3, "中秋观众": 800*3*3, "总曝光(万)": 800 }, "文旅节庆": { "接待量(万)": 15, "收入(百万)": 5, "推荐率": 70 } } # 创建画布 plt.figure(figsize=(18, 12)) # 子图1:常规演出数据 ax1 = plt.subplot(2, 2, 1) categories = ['年场次', '年观众(万)', '满意度', '社媒话题(万)'] values = [data["常规演出"][k] for k in categories] bars = ax1.bar(categories, values, color=['#4C72B0', '#55A868', '#C44E52', '#8172B2']) ax1.set_title("常态化演出年度数据") ax1.bar_label(bars) # 添加数据标签 # 子图2:游客互动对比 ax2 = plt.subplot(2, 2, 2) activities = ['面具制作', '服饰试穿', '唱腔学习'] participants = [5000, 200*365, 8000] # 服饰试穿换算年总量 ax2.bar(activities, participants, color='#DD8452') ax2.set_ylabel("年参与人次") ax2_twin = ax2.twinx() ax2_twin.plot(activities, [92, 70, 85], color='#55A868', marker='o') ax2_twin.set_ylabel("好评率(%)") ax2.set_title("游客互动项目对比") # 子图3:节日展演对比 ax3 = plt.subplot(2, 2, 3) festivals = ['春节', '端午', '中秋'] attendance = [data["节日展演"][f"{f}观众"] for f in festivals] ax3.bar(festivals, attendance, color=['#C44E52', '#55A868', '#4C72B0']) ax3.set_ylabel("观众人次") ax3.set_title("传统节日展演数据") # 子图4:文旅节庆数据 ax4 = plt.subplot(2, 2, 4) metrics = ['接待量', '收入', '推荐率'] values = [15, 500, 70] ax4.bar(metrics, values, color=['#4C72B0', '#55A868', '#C44E52']) ax4.set_title("文旅节庆成效") plt.tight_layout() plt.savefig('cultural_tourism_stats.png') plt.show()根据以上代码输出结果
时间: 2025-07-15 07:41:29 浏览: 6
<think>好的,我需要分析用户提供的Python代码,并解释其功能、结构以及可能的输出结果。首先,我会仔细阅读代码,理解每一部分的作用,然后组织语言进行解释,最后提出相关问题。
首先,代码导入了matplotlib.pyplot和numpy,不过numpy在代码中并没有被使用到,可能是个冗余导入。接着定义了一个名为data的嵌套字典,包含四个部分的数据:常规演出、游客互动、节日展演和文旅节庆。每个部分有不同的指标和对应的数值。
接下来,创建了一个18x12英寸的画布,然后使用subplot创建了四个子图,布局是2行2列。每个子图对应数据中的一个部分:
1. 子图1(ax1)是常规演出的柱状图,四个指标:年场次、年观众、满意度、社媒话题,用不同颜色表示,并添加了数据标签。
2. 子图2(ax2)展示了游客互动项目的参与人次和好评率。主坐标轴是参与人次的柱状图,次坐标轴是好评率的折线图,使用双坐标轴。
3. 子图3(ax3)是三个传统节日的观众人次柱状图,每个节日用不同颜色。
4. 子图4(ax4)是文旅节庆的三个指标:接待量、收入、推荐率,用柱状图展示。
最后调用tight_layout调整布局,保存图像并显示。
需要注意的问题:
- 数据计算是否正确,例如服饰打卡的换算是否正确?
- 游客互动中的好评率数据是否对应正确?代码中使用了[92,70,85],但数据里好评率是[92,70]。
- 文旅节庆中的收入单位是百万,但代码中直接使用了500,可能需要调整。
- 颜色代码是否正确,是否有重复或错误。
可能的输出结果是一个包含四个子图的图像,每个子图展示不同数据集的可视化结果。用户可能遇到的错误包括数据计算错误、图表标签不正确或双坐标轴使用不当等。</think>该代码使用Matplotlib创建了一个包含四个子板的信息可视化仪表盘,用于展示文化旅游相关数据。以下是逐部分解析:
1. **数据准备**:
- 嵌套字典结构存储四大类业务数据
- 数据包含数值型和计算值(如`200*365/10000`换算年总量)
- 注意:服饰打卡换算应为`200*365/10000=7.3万`,但代码中直接计算结果为`73000`未转换单位
2. **可视化结构**:
```python
plt.figure(figsize=(18, 12)) # 创建18x12英寸画布
plt.subplot(2,2,1) # 2行2列的第1子图
```
3. **子图特性**:
- **ax1**:基础柱状图
```python
bars = ax1.bar(categories, values, color=指定颜色列表)
ax1.bar_label(bars) # 自动添加数值标签
```
- **ax2**:双Y轴图表
```python
ax2_twin = ax2.twinx() # 创建次坐标轴
ax2_twin.plot(...) # 在次坐标绘制折线图
```
- **ax3**:多色柱状图
```python
color=['#C44E52', '#55A868', '#4C72B0'] # 为每个柱子指定颜色
```
4. **现存问题**:
- 游客互动中好评率数据不匹配(代码写死[92,70,85],数据源为[92,70])
- 文旅节庆收入单位未转换(数据中为5百万,代码直接使用500)
- 节日展演观众计算有误(800*3*3=7200,但代码计算结果为7200次未换算单位)
阅读全文