Matplotlib 条形图上的颜色负值不同
Color Negative Values on Matplotlib Bar Plots Differently
我正在尝试对负值的条形图进行不同的着色。非常感谢任何实现此目的的指针。谢谢
import matplotlib.pyplot as plt
import numpy as np
city=['a','b','c','d']
pos = np.arange(len(city))
Effort =[4, 3, -1.5, -3.5]
plt.barh(pos,Effort,color='blue',edgecolor='black')
plt.yticks(pos, city)
plt.xlabel('DV', fontsize=16)
plt.ylabel('Groups', fontsize=16)
plt.title('ABCDEF',fontsize=20)
plt.show()
ABCDEF matplotlib graph
只需为第二个图涂上不同的颜色即可:
city = ['a', 'b', 'c', 'd']
pos = np.arange(len(city))
Effort = np.array([4, 3, -1.5, -3.5])
plt.barh(pos[Effort >= 0], Effort[Effort >= 0], color='blue', edgecolor='black') # positive values in blue
plt.barh(pos[Effort < 0], Effort[Effort < 0], color='red', edgecolor='black') # negative values in red
plt.yticks(pos, city)
plt.xlabel('DV', fontsize=16)
plt.ylabel('Groups', fontsize=16)
plt.title('ABCDEF', fontsize=20)
plt.show()
这导致:
这会将正条着色为绿色,将负条着色为红色。
import matplotlib.pyplot as plt
import numpy as np
city=['a','b','c','d']
pos = np.arange(len(city))
Effort =[4, 3, -1.5, -3.5]
colors = ['g' if e >= 0 else 'r' for e in Effort]
plt.barh(pos,Effort,color=colors,edgecolor='black')
plt.yticks(pos, city)
plt.xlabel('DV', fontsize=16)
plt.ylabel('Groups', fontsize=16)
plt.title('ABCDEF',fontsize=20)
plt.show()
如果 Effort 是一个 numpy 数组,我们可以使用 np.where 来获取颜色而不是列表理解。
Effort = np.array([4, 3, -1.5, -3.5])
colors = np.where(Effort >= 0, 'g', 'r')
我正在尝试对负值的条形图进行不同的着色。非常感谢任何实现此目的的指针。谢谢
import matplotlib.pyplot as plt
import numpy as np
city=['a','b','c','d']
pos = np.arange(len(city))
Effort =[4, 3, -1.5, -3.5]
plt.barh(pos,Effort,color='blue',edgecolor='black')
plt.yticks(pos, city)
plt.xlabel('DV', fontsize=16)
plt.ylabel('Groups', fontsize=16)
plt.title('ABCDEF',fontsize=20)
plt.show()
ABCDEF matplotlib graph
只需为第二个图涂上不同的颜色即可:
city = ['a', 'b', 'c', 'd']
pos = np.arange(len(city))
Effort = np.array([4, 3, -1.5, -3.5])
plt.barh(pos[Effort >= 0], Effort[Effort >= 0], color='blue', edgecolor='black') # positive values in blue
plt.barh(pos[Effort < 0], Effort[Effort < 0], color='red', edgecolor='black') # negative values in red
plt.yticks(pos, city)
plt.xlabel('DV', fontsize=16)
plt.ylabel('Groups', fontsize=16)
plt.title('ABCDEF', fontsize=20)
plt.show()
这导致:
这会将正条着色为绿色,将负条着色为红色。
import matplotlib.pyplot as plt
import numpy as np
city=['a','b','c','d']
pos = np.arange(len(city))
Effort =[4, 3, -1.5, -3.5]
colors = ['g' if e >= 0 else 'r' for e in Effort]
plt.barh(pos,Effort,color=colors,edgecolor='black')
plt.yticks(pos, city)
plt.xlabel('DV', fontsize=16)
plt.ylabel('Groups', fontsize=16)
plt.title('ABCDEF',fontsize=20)
plt.show()
如果 Effort 是一个 numpy 数组,我们可以使用 np.where 来获取颜色而不是列表理解。
Effort = np.array([4, 3, -1.5, -3.5])
colors = np.where(Effort >= 0, 'g', 'r')