diff --git a/q4/q4_1/q4_1.py b/q4/q4_1/q4_1.py index d6f2f6e..1f5cfc2 100644 --- a/q4/q4_1/q4_1.py +++ b/q4/q4_1/q4_1.py @@ -1,45 +1,30 @@ +# q4_1.py import json import matplotlib.pyplot as plt from collections import Counter -# 设置中文字体(解决中文乱码问题,必加!) -plt.rcParams['font.sans-serif'] = ['SimHei'] # 黑体 -plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题 +# 读取上级目录的 movies.json +with open("../q4_2/movies.json", "r", encoding="utf-8") as f: + data = json.load(f) -# 1. 读取movies.json数据 -try: - with open('movies.json', 'r', encoding='utf-8') as f: - movies_data = json.load(f) -except FileNotFoundError: - print("错误:未找到movies.json文件,请确认文件在当前目录!") - exit() +movies = data["movies"] -# 2. 统计各类型电影数量(处理多类型分隔,比如"剧情/喜剧"拆分为两个类型) -genre_list = [] -for movie in movies_data: - # 假设movies.json里的类型字段是"genre",如果是其他名称(如"type")请修改 - genres = movie.get('genre', '').split('/') # 按/拆分多类型 - genre_list.extend([g.strip() for g in genres if g.strip()]) # 去空格并过滤空值 +# 统计每个类型有多少部电影 +genres = [m["genre"] for m in movies] +genre_count = Counter(genres) -genre_counter = Counter(genre_list) # 统计各类型数量 +# X轴:类型名称 Y轴:数量 +x = list(genre_count.keys()) +y = list(genre_count.values()) -# 3. 提取X轴(类型)和Y轴(数量)数据 -x_labels = list(genre_counter.keys()) -y_values = list(genre_counter.values()) +# 绘制柱状图 +plt.bar(x, y) -# 4. 绘制柱状图 -plt.figure(figsize=(10, 6)) # 设置画布大小 -plt.bar(x_labels, y_values, color='skyblue') # 用plt.bar绘制柱状图 +# 标题 +plt.title("类型电影数量分布") -# 5. 设置标题和坐标轴(按要求配置) -plt.title("类型电影数量分布", fontsize=14) # 标题 -plt.xlabel("电影类型", fontsize=12) # X轴标签(可选,更清晰) -plt.ylabel("电影数量", fontsize=12) # Y轴标签(可选,更清晰) -plt.xticks(rotation=45, ha='right') # X轴文字旋转,避免重叠(可选优化) -plt.tight_layout() # 自动调整布局,防止文字被截断 +# 保存图片 +plt.savefig("q4_1_bar.png", dpi=150) +plt.close() -# 6. 保存图片(按要求:q4_1_bar.png,dpi=150) -plt.savefig('q4_1_bar.png', dpi=150) -plt.close() # 关闭画布,释放资源 - -print("柱状图绘制完成!已保存为q4_1_bar.png") \ No newline at end of file +print("✅ q4_1 柱状图完成!已生成 q4_1_bar.png") \ No newline at end of file diff --git a/q4/q4_1/q4_1_bar.png b/q4/q4_1/q4_1_bar.png new file mode 100644 index 0000000..42549c7 Binary files /dev/null and b/q4/q4_1/q4_1_bar.png differ