【问题标题】:Matplotlib - set bars different color depending on where they are located on the x axisMatplotlib - 根据它们在 x 轴上的位置设置不同的颜色
【发布时间】:2015-09-29 20:40:00
【问题描述】:

我在 matplotlib 中制作了一个条形图,并希望根据条形图在 x 轴上的位置将条形图的颜色更改为绿色或黄色。例如,用 [5, 6, 8, 9] 中的 x 值表示数据的条形应为黄色,而所有其他条形应为绿色。我怎么做?谢谢!

【问题讨论】:

    标签: matplotlib colors bar-chart


    【解决方案1】:

    首先,如果您发布一些代码会很好。我建议您阅读 matplotlib.org 上提供的信息,以了解您正在使用的函数的可能选项。这是一个代码示例:

    import numpy as np
    import matplotlib.pyplot as plt
    x  = np.arange(10)
    xx = x**2
    cr = ['g','g','g','g','y','y','y','y','g','g']
    fig,ax = plt.subplots()
    ax.bar(x,xx,color=cr)
    plt.show()
    

    这会产生:

    【讨论】:

      【解决方案2】:

      上述解决方案的唯一问题是我在 x 轴上的条数不一致,具体取决于绘图。我通过根据我的 x 值生成颜色数组来绕过它。如果该值落在我想要涂成红色的范围内 - 我在列表中添加了一个“r”,否则我添加了“g”。但总的来说,这正是 Sasha 的答案。

      fig2, axs2 = plt.subplots(5, 2)
      fig2.suptitle("Plot A")
      plt.subplots_adjust(wspace = 0.5, hspace = 0.7)
      for j in range (10):
          row = j/2
          col = j % 2
          box_title = box_sorted[j]
          box_x = box_top10[j].keys()
          box_y = box_top10[j].values()
          colors = []
          for x in box_x:
              if x in [5, 6, 8, 9]:
                  colors.append('r')
              else:
                  colors.append('g')
          axs2[row][col].bar([float(v) for v in box_x], [float(v) for v in box_y], align="center", color = colors)
          axs2[row][col].set_title(box_title, fontsize = 12)
          axs2[row][col].set_xlim ([0, 10.0])
          axs2[row][col].set_ylim ([0, float(max(box_y) + 3)])
          xticks = np.arange(0, 10, 1)
          axs2[row][col].set_xticks(xticks)
          yticks = np.arange(0, (max(box_y) + 5), int((max(box_y) + 6)/6))
          axs2[row][col].set_yticks(yticks)
          axs2[row][col].tick_params(axis='both', which='major', labelsize=8)
          axs2[row][col].set_xlabel("rating", fontsize = 8)
          axs2[row][col].set_ylabel("#p", fontsize = 8)
      
      plt.show()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-05
        • 1970-01-01
        • 2013-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-19
        相关资源
        最近更新 更多