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

单数据点场景下Matplotlib折线图无显示问题求助

问题原因

你使用ax.plot()时指定了纯折线样式("-r"、"-b"),单个数据点无法形成折线,因此matplotlib不会渲染任何可见元素,导致图表看起来为空。

解决方案

有两种简单的修复方式:

方式1:同时指定折线和标记点样式

修改plot函数的格式字符串,同时包含折线和标记符号,这样单个点会显示为标记,多个点时显示折线+标记:

fig, ax = plt.subplots()
# 替换原来的plot行,添加标记符号(o代表圆点)
ax.plot(rokCzyste, czyste, "-ro", label="Czystorasowe")
ax.plot(rokInne, inne, "-bo", label="Inne")
# 其余代码保持不变
leg = ax.legend()
plt.grid(axis="y")
ax.set_xlabel('Rok')
ax.set_ylabel('Liczba prosiąt urodzonych')
plt.title(f"Liczba prosiąt urodzonych czystorasowych i Innych w stadzie {stado}")
plt.xticks(np.arange(min(df10['Rok']), max(df10['Rok'])+1))
plt.xticks(rotation=90)
plt.savefig('wykres2.png', dpi=300, bbox_inches='tight')

你可以根据需求替换标记符号,比如s(方形)、^(三角形)等。

方式2:根据数据长度切换绘图方式

如果希望单个点时只显示标记,多个点时只显示折线,可以添加判断逻辑:

fig, ax = plt.subplots()
# 处理Czystorasowe数据集
if len(rokCzyste) == 1:
    ax.scatter(rokCzyste, czyste, color="red", label="Czystorasowe")
else:
    ax.plot(rokCzyste, czyste, "-r", label="Czystorasowe")

# 处理Inne数据集
if len(rokInne) == 1:
    ax.scatter(rokInne, inne, color="blue", label="Inne")
else:
    ax.plot(rokInne, inne, "-b", label="Inne")

# 其余代码保持不变
leg = ax.legend()
plt.grid(axis="y")
ax.set_xlabel('Rok')
ax.set_ylabel('Liczba prosiąt urodzonych')
plt.title(f"Liczba prosiąt urodzonych czystorasowych i Innych w stadzie {stado}")
plt.xticks(np.arange(min(df10['Rok']), max(df10['Rok'])+1))
plt.xticks(rotation=90)
plt.savefig('wykres2.png', dpi=300, bbox_inches='tight')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:32:23