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

使用Pandas绘制DataFrame折线图时如何为各列配置不同marker

问题原因

你遇到的TypeError: unhashable type: 'set'报错有两层原因:

  • 你给marker参数传入了用{}定义的集合(set)结构,该类型无法被pandas的绘图接口解析
  • pandas内置DataFrame.plot的marker参数默认仅支持传入单个标记样式,无法直接通过传入序列为不同列的折线分配不同标记
解决方案(最小改动,适配原代码逻辑)

你只需要在原有绘图逻辑的基础上,获取绘图返回的坐标轴对象,再遍历修改每条折线的标记样式即可,示例代码如下:

# 按df列的顺序定义对应的标记样式,用列表而非集合
markers = ['s', 'o', 'D', 'P', '^']
# 原有绘图逻辑,保存返回的坐标轴对象
ax = df.plot(kind='line', markersize=10)
# 遍历所有折线,逐一设置标记
for line, marker in zip(ax.lines, markers):
    line.set_marker(marker)
可选方案:逐列绘制单独指定标记

如果你需要对每列折线的样式做更多自定义,也可以逐列调用绘图接口,每列单独指定标记:

import matplotlib.pyplot as plt

markers = ['s', 'o', 'D', 'P', '^']
fig, ax = plt.subplots()
# 遍历每列和对应的标记逐一绘制
for col, marker in zip(df.columns, markers):
    df[col].plot(ax=ax, label=col, marker=marker, markersize=10)
# 显示图例
ax.legend()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:15:01