首页 > 解决方案 > 根据字典 matplotlib 中的值更改标签颜色

问题描述

我有一个字典,其中包含作为标签的键和作为绘图颜色的值。使用以下示例:使用 matplotlib 更改绘图处特定刻度的颜色。如何根据字典中的键更改标签颜色。请注意,标签可以在 x 轴上重复多次,它们可以是字符串,例如标签 = 'A'、'B'、'C'、'D'。

这是代码的一点修改:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(5,4))
ax.plot([1,2,3])
colors = {0.00 :'grey',0.25:'yellow',0.50:'brown',2.00:'red'}
for k, v in colors.items():
    ax.get_xticklabels()[k].set_color(v)

plt.show()

我希望绘图上的每个标签都与颜色相关联,但我得到一个带有此错误的普通绘图:TypeError:列表索引必须是整数或切片,而不是浮点数。我正在尝试将其专门用于字符串标签。

标签: pythonmatplotlib

解决方案


一种解决方案是检查字典键中是否存在刻度标签。为了比较确切的值,我将键从浮点数转换为字符串。我相信这对你来说应该不是问题。

PS:根据@ImportanceOfBeingEarnest 的评论,我会声明这个答案假设该数字保持静态并且未调整大小。

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(5,4))
ax.plot([1,2,3])
colors = {'0.00' :'grey','0.25':'yellow','0.50':'brown','2.00':'red'}

fig.canvas.draw()

for xtic in ax.get_xticklabels():
    if xtic.get_text() in colors.keys(): # Change color if exist else not
        xtic.set_color(colors[xtic.get_text()])

plt.show()

在此处输入图像描述


推荐阅读