如何使条形图自动在不同颜色之间循环?

发布于 2024-09-16 13:17:21 字数 241 浏览 6 评论 0原文

matplotlib中,line自动绘制颜色循环。这两条线图将具有不同的颜色。

axes.plot(x1, y)
axes.plot(x2, y)

然而,条形图则不然。这两个数据系列都有蓝色条。

axes.bar(x1, y)
axes.bar(x2, y)

如何使条形图在一组预定义的颜色之间自动循环?

In matplotlib, line plots color cycle automatically. These two line plots would have different colors.

axes.plot(x1, y)
axes.plot(x2, y)

However, bar plots don't. Both these data series will have blue bars.

axes.bar(x1, y)
axes.bar(x2, y)

How do I make bar plots cycle automatically across a predefined set of colors?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

傲影 2024-09-23 13:17:21

类似的事情对你有用吗?

#!/usr/bin/python 
from matplotlib import cm
import matplotlib.pyplot as plt

#data
x=[1,2,4]
y=[11,12,8]

for i in range(0,len(x)):
  plt.bar(x[i],y[i],color=cm.jet(1.*i/len(x)))

plt.show()

有关颜色图的更多信息。

编辑:请参阅此示例了解如何循环预定义的颜色集。

Would something along these lines do it for you?

#!/usr/bin/python 
from matplotlib import cm
import matplotlib.pyplot as plt

#data
x=[1,2,4]
y=[11,12,8]

for i in range(0,len(x)):
  plt.bar(x[i],y[i],color=cm.jet(1.*i/len(x)))

plt.show()

More on colormaps.

EDIT: See this example for how to cycle over a predefined set of colors.

羁绊已千年 2024-09-23 13:17:21

选修的:
要完全控制图形的样式,请使用现有的 mplstyle 作为模板:
https://github.com/matplotlib/matplotlib/tree /master/lib/matplotlib/mpl-data/stylelib

调整参数:axes.prop_cycle: Cycler('color', [....])

加载您的样式:

from matplotlib import style
style.use ('PATH TO YOUR MPL STYLE')

您可以循环浏览您的或默认的样式颜色循环几乎以任何您想要的方式:

#!/usr/bin/python 
import matplotlib.pyplot as plt

#data
x=[1,2,4]
y=[11,12,8]
prop_iter = iter(plt.rcParams['axes.prop_cycle'])

for i in range(0,len(x)):
  plt.bar(x[i],y[i],color=next(prop_iter)['color'])

plt.show()

plt.rcParams['axes.prop_cycle'] 获取所有循环,因此您需要使用键 ['color'] 选择正确的循环器。

您可以放弃迭代器创建,并使用列表理解和 zip 来创建一个衬垫:

#!/usr/bin/python 
import matplotlib.pyplot as plt

x=[1,2,4]
y=[11,12,8]
prop = plt.rcParams['axes.prop_cycle']
[plt.bar(param[0],param[1],color=param[2]['color']) for param in zip(x,y,prop)]
plt.show()

在此处输入图像描述


Optional:
To get full control over the style of your figures use an existing mplstyle as a template:
https://github.com/matplotlib/matplotlib/tree/master/lib/matplotlib/mpl-data/stylelib

adjust the parameter : axes.prop_cycle: cycler('color', [....])

load your style:

from matplotlib import style
style.use ('PATH TO YOUR MPL STYLE')

You can cycle through your or the default style color cycle almost any way you want:

#!/usr/bin/python 
import matplotlib.pyplot as plt

#data
x=[1,2,4]
y=[11,12,8]
prop_iter = iter(plt.rcParams['axes.prop_cycle'])

for i in range(0,len(x)):
  plt.bar(x[i],y[i],color=next(prop_iter)['color'])

plt.show()

plt.rcParams['axes.prop_cycle'] grabs all cycles so you need to select the correct cycler using the key ['color'].

You can drop the iterator creation and use list comprehension and zip to create one liners:

#!/usr/bin/python 
import matplotlib.pyplot as plt

x=[1,2,4]
y=[11,12,8]
prop = plt.rcParams['axes.prop_cycle']
[plt.bar(param[0],param[1],color=param[2]['color']) for param in zip(x,y,prop)]
plt.show()

enter image description here

乱了心跳 2024-09-23 13:17:21

来自 http://matplotlib.sourceforge.net/api/ 的文档pyplot_api.html#matplotlib.pyplot.bar

条形图不会自动循环颜色,但您可以通过传递颜色属性直接设置颜色。
像这样:

colors = ['red', 'blue', 'green']
i = -1
def getCycledColor():
    global i, colors
    if i < len(colors) -1
        i = i + 1
        return colors[i]
    else:
        i = -1
axes.bar(x1,y,facecolor=getCycledColor())
axes.bar(x2,y,facecolor=getCycledColor())

颜色可以从预定义的列表中选择并循环。

From the documentation at http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.bar

The bar plots do not cycle color automatically but you could set the color directly by passing the color properties.
Something like this:

colors = ['red', 'blue', 'green']
i = -1
def getCycledColor():
    global i, colors
    if i < len(colors) -1
        i = i + 1
        return colors[i]
    else:
        i = -1
axes.bar(x1,y,facecolor=getCycledColor())
axes.bar(x2,y,facecolor=getCycledColor())

The colors can be chosen from a predefined list and cycled.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文