You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# -*- coding: GBK -*-
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用黑体显示中文
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
data = pd.read_csv('changsha天气.csv', encoding='GBK')['天气'].tolist()
# 统计天气种类及次数
weather_counts = {}
for weather in data:
if weather in weather_counts:
weather_counts[weather] += 1
else:
weather_counts[weather] = 1
# 绘制饼图
plt.figure(figsize=(15,15 ))
threshold = 0.05 # 设定显示阈值为5%
def custom_autopct(pct):
"""
自定义autopct逻辑用于控制百分比标签的显示。
如果百分比小于阈值,则返回空字符串(即不显示标签)。
"""
return ('%1.1f%%' % pct) if pct >= threshold else ''
labels_to_show = [label for label, count in weather_counts.items() if count/sum(weather_counts.values()) >= threshold]
values_to_show = [count for label, count in weather_counts.items() if label in labels_to_show]
legend_labels = [label for label in weather_counts.keys() if label in labels_to_show]
patches, texts, autotexts = plt.pie(weather_counts.values(), autopct=custom_autopct, startangle=140)
plt.legend(patches,weather_counts.keys(), title="Weather Types", loc="center left", bbox_to_anchor=(1, 0, 0.5, 1))
plt.title('Weather Distribution')
plt.savefig('长沙2023年气温饼图.png')
plt.show()