Atl*_*las 1 python matplotlib bar-chart
我想在 matplotlib 中的堆叠条形图中交替颜色..因为我可以根据它们的类型为图形获得不同的颜色。我有两种类型,只是它们不定期交替。所以我需要在选择颜色之前检查它们的类型。
问题是它是有条件的。我在数组中提供类型,但没有办法在 plt.bar(................) 的级别上做到这一点......我想。
p1 = plt.bar(self.__ind,
self.__a,
self.__width,
color='#263F6A')
p2 = plt.bar(self.__ind,
self.__b,
self.__width,
color='#3F9AC9',
bottom = self.__arch)
p3 = plt.bar(self.__ind,
self.__c,
self.__width,
color='#76787A',
bottom = self.__a + self.__b)
Run Code Online (Sandbox Code Playgroud)
self.__a 和 self.__b 和 self.__c 都是我需要在同一个图中绘制的数据列表,并且对于上面提到的列表中的每个元素,我还有另一个类型列表。我只想知道如何才能根据类型列表提供的类型更改图形的颜色,同时将所有条形保持在一个图中。
当你说这self.__a
是一个列表时,我很困惑——当我尝试绘制一个列表时:
In [19]: plt.bar(1,[1,2,3], 0.1, color='#ffcc00')
Run Code Online (Sandbox Code Playgroud)
我得到
AssertionError: incompatible sizes: argument 'height' must be length 1 or scalar
Run Code Online (Sandbox Code Playgroud)
但是,您可以做的是在循环中绘制您的值:
# Setup code here...
indices = [1,2,3,4]
heights = [1.2, 2.2, 3.3, 4.4]
widths = [0.1, 0.1, 0.2, 1]
types = ['spam', 'rabbit', 'spam', 'grail']
for index, height, width, type in zip(indices, heights, widths, types):
if type == 'spam':
plt.bar(index, height, width, color='#263F6A')
elif type == 'rabbit':
plt.bar(index, height, width, color='#3F9AC9', bottom = self.__arch)
elif type == 'grail':
plt.bar(index, height, width, color='#76787a', bottom = 3)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5774 次 |
最近记录: |