T3J*_*J45 6 python numpy matplotlib python-2.7
我有这 2 个{ndarray}有 3 个正值、负值和中性分数的值。
>>>y1
array([82, 80, 63])
>>>y2
array([122,  73,  30])
对于相同的 I 需要y1[0]并y2[0]绘制在一起,因为它们对应为正值,每个数组中的其他 2 个值也是如此。
我试过这个:
import matplotlib.pyplot as plt
import numpy as np
def biplt(groundTruth, predictedValues, plt_name='<name>'):
        gt = groundTruth
        pr = predictedValues
        x = np.arange(2)
        y1, y2 = gt.values, pr.values
        fig, axes = plt.subplots(ncols=1, nrows=1)
        width = 0.20
        plt.title('%s\n Accuracy Score' % plt_name)
        plt.xlabel('Parameters')
        plt.ylabel('Score')
        axes.bar(x, y1, width, label="Algorithm 1")
        axes.bar(x + width, y2, width, color=list(plt.rcParams['axes.prop_cycle'])[2]['color'], label="Algorithm 2")
        axes.set_xticks(x + width)
        axes.set_xticklabels(['Positive', 'Negative'])
        plt.legend()
        plt.show()
这导致了ValueError,请检查以下内容:
ValueError:形状不匹配:对象不能广播到单个形状
我无法诊断可能的形状有问题
Nic*_*ers 10
np.arange(2)给出array([0, 1]),所以只有两个值。如果您尝试针对此绘制三个值(iny1或y2),那将不起作用,并且会抛出 ValueError (准确地告诉您这一点):
ValueError: shape mismatch: objects cannot be broadcast to a single shape
尝试使用np.arange(3).
异常来自这样一个事实,即您试图y针对 2 个 x 值绘制 3个值(请参阅 上的文档np.arange())。
这是产生所需输出的修改后的代码:
y1 = np.array([82, 80, 63])
y2 = np.array([122,  73,  30])
x = np.arange(len(y1))
width = 0.20
fig, axes = plt.subplots(ncols=1, nrows=1)
plt.title('Accuracy Score')
plt.xlabel('Parameters')
plt.ylabel('Score')
axes.bar(x, y1, width=-1.*width, align='edge', label="Algorithm 1")
axes.bar(x, y2, width=width, align='edge', color=list(plt.rcParams['axes.prop_cycle'])[2]['color'], label="Algorithm 2")
axes.set_xticks(x)
axes.set_xticklabels(['Positive', 'Negative', 'Neutral'])
plt.legend()
plt.show()
| 归档时间: | 
 | 
| 查看次数: | 16756 次 | 
| 最近记录: |