matplotlib - Matplotlib:如何让这个图例更紧凑?
问题描述
如您所见,符号形状的条目在很大程度上是多余的,因为“EN”、“TF”、“VA”这三个类别总是映射到相同的形状,而不管颜色如何。我只想将三个形状设为中性色,就像 ggplot 那样。
这是 DataFrame 的样子:
>>> df1
Monat Kat km
Jahr
2014 61 9.219178 NaN 22.19200
51 9.219178 NaN 31.93280
62 9.284932 NaN 53.49220
52 9.383562 NaN 84.31150
64 9.547945 NaN 98.45260
... ... ... ...
2019 48 9.252055 3022.01829
45 9.383562 VA 3090.01239
28 9.613699 VA 3160.66279
20 9.712329 NaN 3249.04139
31 9.778082 NaN 3313.60969
[264 rows x 3 columns]
相关代码片段:
for g in df1.groupby(level="Jahr"):
ax.step(g[1].Monat, g[1].km, label=g[0],
color=color_dict[g[0]],
where="post")
for gg in g[1].groupby("Kat"):
ax.scatter(gg[1].Monat, gg[1].km,
label=gg[0],
marker=marker_dict[gg[0]],
color=color_dict[g[0]])
解决方案
打电话给我,疯子。但是你不能排除label
论点scatter
,然后用相关标记绘制一些虚拟图吗?
因此,只需排除label=
from ax.scatter
,然后只需:
ax.plot([],[],label='FA')
ax.plot([],[],label='VE')
ax.plot([],[],label='IA')
否则,您必须动态检测,如果标记已经存在并且跟踪它将会是一些烦人的代码。它必须是动态的吗?
推荐阅读
- javascript - Photoshop CEP 面板远程托管?
- rxjs - 如何有条件地从ngrx中的效果调度多个动作
- excel - 数据框到 Excel 工作表未按预期工作
- java - 使用 Mockito 和来自 Cloud Firestore 的异步调用编写测试时出错
- java - 无法向 Firebase 实时数据库添加权限
- javascript - 将值映射到堆积条形图
- node.js - 在本地 VS Code 中调试 Puppeteer NodeJS 应用程序时启动 Chrome
- ruby-on-rails - Ruby 2.4 和 BigDecimal 错误(无效值)
- imagemagick - 使用 ImageMagick 将 PDF 转换为具有不同分辨率的图像
- r - 按日期转置行相乘