2015-07-10 34 views

回答

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() 

這產生:

enter image description here

0

與上述方案中的唯一問題是我的是具有對依賴於圖中的x軸杆不一致的次數。我通過基於我的x值生成顏色數組來繞過它。如果該值落在我想要着色的範圍內 - 我在列表中添加了'r',否則我添加'g'。但總的來說,薩沙的回答正是如此。

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() 
相關問題