当前位置: 首页 > 知识库问答 >
问题:

为什么matplotlib图例元素有相同的颜色?

充星腾
2023-03-14

我正在做一个条形图并添加图例。代码如下:

import numpy as np
import matplotlib.pyplot as plt
rectArr = list()
fig, ax_arr = plt.subplots(nrows=2, ncols=1, figsize=(8,8), constrained_layout=True)
fig.suptitle("MicCheck")
v = [0,1,2]
v1 = [1,2,3]
rectArr.append(v)
rectArr.append(v1)
rects = tuple()
ax = ax_arr[0]
ind = np.arange(len(v))
colors = ["seagreen", "red", "b", "g", "y"]
ii = 0
print(colors[ii%len(colors)])
rect = ax.bar(ind+ii*0.8, rectArr[ii], 0.18, color=tuple([colors[ii%len(colors)]],), zorder=3)
rects += tuple(rect,)
ii=1
rect = ax.bar(ind+ii*0.8, rectArr[ii], 0.18, color=(colors[ii%len(colors)]), zorder=3)
rects += tuple(rect,)
legends = ("a", "b",)
ax.legend(rects, legends, loc='upper center', bbox_to_anchor=(0.5, -0.08), ncol=3 )
plt.show()

我得到的问题是,图例元素具有与下图相同的颜色:为什么?

共有2个答案

郎鸿
2023-03-14
import numpy as np
import matplotlib.pyplot as plt
rectArr = list()
fig, ax_arr = plt.subplots(nrows=2, ncols=1, figsize=(8,8), constrained_layout=True)
fig.suptitle("MicCheck")
v = [0,1,2]
v1 = [1,2,3]
rectArr.append(v)
rectArr.append(v1)
rects = tuple()
ax = ax_arr[0]
ind = np.arange(len(v))
colors = ["seagreen", "red", "b", "g", "y"]
ii = 0
legends = ("a", "b",)

print(colors[ii%len(colors)])
rect = ax.bar(ind+ii*0.8, rectArr[ii], 0.18, color=tuple([colors[ii%len(colors)]],), zorder=3, label=legends[0])
rects += tuple(rect,)
ii=1
rect = ax.bar(ind+ii*0.8, rectArr[ii], 0.18, color=(colors[ii%len(colors)]), zorder=3, label=legends[1])
rects += tuple(rect,)
patches, labels = ax.get_legend_handles_labels()
#ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.08), ncol=3 )
ax.legend(patches, legends, loc='upper center' )
plt.show()
易弘阔
2023-03-14

要获得两种颜色,您只需修改图例的绘制方式

例如

ax.plot(x, v, label='a = red')  #plot one array 
ax.plot(x, v1, label='b =green') #plot 2nd array

#ax.legend()..
plt.show()

有关更多示例,请参见我的其他类似答案。

希望这有帮助

 类似资料:
  • 我试图在两个图上绘制熊猫数据帧。一个是matplotlib pyplot饼图,另一个是seaborn条形图。在每个图表上,我根据不同的列对数据框进行排序。此外,每个图表都代表数据框排序所依据的相应值。因此,两个图表中的行顺序不同。这样,数据框中相同的索引(或类别)在图表上以不同的颜色出现,这是令人困惑的。为了在不同的图表上有相同颜色的索引,我如何解决这个问题? 我的代码: 例如,1.1。15200

  • 总体上对matplotlib真的很困惑。我通常只使用导入matplotlib.pyplot作为plt。 然后做plt.figure(),plt.scatter(),plt.xlabel(),plt.show()等等。但是我在谷歌上搜索如何做一些事情,比如用颜色映射图例,我得到了所有这些包括ax的例子。但是有plt.legend(),matplotlib留档中的例子只是显示plt.legend(句柄

  • 问题内容: 我开始使用本教程为初学者学习MatPlotLib 。这是第一个例子。 如果我将这三行代码写入我的python文件并在命令行中执行(通过键入),则什么都不会发生。没有错误信息,没有情节。 有人知道我为什么看不到情节吗? 添加 当然我需要用。但是,即使我添加以下3行: 它仍然不产生任何东西。 添加 这是我现在使用的行: 我仍然有相同的结果(什么都没有)。 问题答案: 后端可能有问题。输出是

  • 我有下面的xml结构: 有不同的 Field(X) 包装器元素,它们包含相同的用户元素。XML 中可以发送 n 个字段。因此,我不能为每个单独的Jaxb。我需要访问用户,但在取消编组步骤后忽略 Field 元素。不幸的是,我无权更改xml结构。我无法找到解决方案。任何指针都会有所帮助。

  • 我使用Matplolib和熊猫数据帧创建了一个散点图,现在我想给它添加一个图例。这是我的代码: 这里发生的是,根据,散点图中点的颜色将改变。所以,因为颜色是“动态的”,我在创造传奇时遇到了很多麻烦。实际的代码只会创建一个带有一个名为“测试”的标签的图例,而附近没有任何颜色。 以下是数据示例: 我试过了,但我不明白的是: > 如何动态设置图例的标签?例如,我的代码说

  • 我正在使用 LWJGL(适用于 Java 的开放GL)库进行纹理映射。以下是从文件中读取图像的代码: 以字节数组形式获取数据栅格(图像像素)的代码: 现在,创建“bytePixels”数组并将其放入字节缓冲区的代码: 这里用于将所有这些绑定到缓冲区: 问题是,图像纹理的颜色与原始图像颜色不同! 原始图片: 纹理图像: 这个答案OpenGL渲染纹理与原始图像颜色不同?,不能解决这个问题,因为在lwj