You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python绘制含2字符串1整数列的饼图并添加年份对应侧边色标

实现方案

你可以通过matplotlib将年份映射为饼图扇区的颜色,再添加对应的色标/图例即可实现需求,以下是可直接运行的代码示例:

渐变色标实现(适合年份连续的场景)

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.colors import Normalize
from matplotlib.cm import ScalarMappable

# 读取数据集
df = pd.read_csv("your_data_path.csv")

# 建立年份到颜色的映射规则
year_min = df['release_year'].min()
year_max = df['release_year'].max()
norm = Normalize(vmin=year_min, vmax=year_max)
# 可按需替换色盘,可选值参考matplotlib官方色盘列表
cmap = plt.get_cmap('RdYlBu')

# 生成每个饼图扇区对应的颜色
pie_colors = [cmap(norm(year)) for year in df['release_year']]

# 绘制饼图
plt.figure(figsize=(9, 7))
wedges, labels, autotexts = plt.pie(
    df['freq'],
    labels=df['top'],
    colors=pie_colors,
    autopct='%1.1f%%',
    textprops={'size': 9}
)

# 添加侧边色标
sm = ScalarMappable(norm=norm, cmap=cmap)
sm.set_array([])
cbar = plt.colorbar(sm, pad=0.1)
cbar.set_label('发布年份', fontsize=11)
# 强制色标显示整数年份
cbar.ax.yaxis.set_major_locator(plt.MaxNLocator(integer=True))

plt.title('Top项频次分布', fontsize=13)
plt.show()

固定离散色实现(适合年份少、需要指定年份对应固定颜色的场景)

如果你需要给每个年份绑定指定颜色,比如红色对应1970、黄色对应1971,可参考如下调整:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.patches import Patch

# 读取数据集
df = pd.read_csv("your_data_path.csv")

# 自定义年份-颜色映射,可按需补充所有年份的对应规则
year_color = {
    1970: 'red',
    1971: 'yellow',
    1972: 'green',
    1973: 'blue'
}

pie_colors = [year_color[year] for year in df['release_year']]

# 绘制饼图
plt.figure(figsize=(9, 7))
wedges, labels, autotexts = plt.pie(
    df['freq'],
    labels=df['top'],
    colors=pie_colors,
    autopct='%1.1f%%',
    textprops={'size': 9}
)

# 添加年份图例
legend_items = [Patch(facecolor=color, label=str(year)) for year, color in year_color.items()]
plt.legend(handles=legend_items, bbox_to_anchor=(1.2, 1), title='发布年份')

plt.title('Top项频次分布', fontsize=13)
plt.show()

内容的提问来源于stack exchange,提问作者BDeveloper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:54:04