Matplotlib bar()函数始终引发E

2024-03-28 20:37:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用这个非常简单的代码来测试条形图的创建。在

import numpy as np
import matplotlib.pyplot as plt
vec = np.random.uniform(-1,1,size=(1,10))
plt.bar(range(len(vec)), vec, linewidth=1)

这个代码总是引发

^{pr2}$

当执行与linewidth相关的操作时,无论我传入什么值,或者是否传入。在

我的matplotlib版本是2.1.0。这里有什么问题?bar的API看起来很简单。在


Tags: 代码importnumpysizematplotlibasnpbar
3条回答

您正试图绘制一个二维数组。它需要一个一维数组 这是编辑好的代码

import numpy as np
import matplotlib.pyplot as plt
vec = np.random.uniform(-1,1,size=(10)) #changed the size part
plt.bar(range(len(vec)), vec, linewidth=1)

{cd1>

vec = np.random.uniform(-1,1,size=10)

vec = np.random.uniform(-1,1,size=(1,10))使vec成为一个具有形状(1,10)的2D数组,即具有1行和10列的数组。^{}要求height为常量或1D标量序列。在

height : scalar or sequence of scalars
         the height(s) of the bars

^{pr2}$

enter image description here

这里vec = np.random.uniform(-1,1,size=(1,10))创建一个形状(1,10)的数组。错误告诉您要提供给bar的数组应该是1D,而不是2D

直接的解决方案是首先不要创建二维阵列。在

import numpy as np
import matplotlib.pyplot as plt
vec = np.random.uniform(-1,1,size=(10))

plt.bar(range(len(vec)), vec, linewidth=1)
plt.show()

如果已经有这样的数组,解决方案是从中选择第一行(也是唯一一行)进行打印。在

^{pr2}$

相关问题 更多 >