【问题标题】:Assign random color to matplotlib graph为 matplotlib 图分配随机颜色
【发布时间】:2013-11-12 21:02:35
【问题描述】:

我正在尝试在 matplotlib 中绘制一些多边形,并且我已经能够使用预定义的 HTML 颜色,但我想使用随机 RGB 元组。但是,我无法弄清楚。

这是我一直在尝试的代码:

>>> import matplotlib
>>> matplotlib.use('agg')
>>> import matplotlib.pyplot as plt
>>> import random
>>> fig, ax = plt.subplots()
>>> ax.plot([1,2,3], [4,5,6], (.4, .5, .6))

我收到此错误:raise ValueError('third arg must be a format string')

我最终想做的是这样做:

>>> import matplotlib
>>> import random
>>> matplotlib.use('agg')
>>> import matplotlib.pyplot as plt
>>> import random
>>> fig, ax = plt.subplots()
>>> ax.plot([1,2,3], [4,5,6], (random.random(), random.random(), random.random()))

有人可以帮帮我吗?谢谢

【问题讨论】:

    标签: python python-2.7 matplotlib rgb


    【解决方案1】:

    获取随机颜色:

    import numpy as np
    ax.plot([1,2,3], [4,5,6], color=np.random.rand(3,1))
    

    【讨论】:

    • 我认为他的意思是要命名的任意颜色,而不是随机选择的颜色。
    • 不用numpy,可以使用color=(random.uniform(0, 1), random.uniform(0, 1), random.uniform(0, 1))
    • color=random.rand(3,1) 不能很好地工作,明确使用np.random.rand(3) 因为:1. random 会与 numpy 的 random 冲突 2. 这将生成一个一维数组,可以被 matplotlib 中的颜色属性接受,因为它要求一个元组,而 random.rand(3,1) 给出一个 nd 数组,它会抛出一个错误
    【解决方案2】:

    这个怎么样:

    ax.plot([1,2,3], [4,5,6], color=(.4, .5, .6))
    

    读自the documentation

    您不需要使用格式字符串,它们只是缩写。所有的线属性都可以由关键字参数控制。例如,您可以使用以下命令设置颜色、标记、线条样式和标记颜色:

    plot(x, y, color='green', linestyle='dashed', marker='o',
         markerfacecolor='blue', markersize=12).
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 2020-07-01
      • 1970-01-01
      • 2017-05-18
      • 2016-05-14
      相关资源
      最近更新 更多