以条形图形式打印列表Python Matplotlib

以条形图形式打印列表Python Matplotlib,python,matplotlib,plot,Python,Matplotlib,Plot,我有一个列表,如下所示: [[1,100.1],[2,133.222],[3,198.0]] 我试图使用这些数据在matplotlib中绘制一个条形图,其中列表中每个元素的第一个元素是x轴(它始终是1-1000之间的整数,没有重复),第二个元素是y轴值 我正在使用Python 3。如何绘制此图?您需要将x值与y值分开。这可以通过zip完成: 第一: import numpy as np import matplotlib.pypl as plt 现在: 现在画条: In [267]: plt

我有一个列表,如下所示:

[[1,100.1],[2,133.222],[3,198.0]]
我试图使用这些数据在matplotlib中绘制一个条形图,其中列表中每个元素的第一个元素是x轴(它始终是1-1000之间的整数,没有重复),第二个元素是y轴值


我正在使用Python 3。如何绘制此图?

您需要将x值与y值分开。这可以通过
zip
完成:

第一:

import numpy as np
import matplotlib.pypl as plt
现在:

现在画条:

In [267]: plt.bar(xs, ys)
条形图不会自动设置条形图的宽度。在目前的情况下,宽度很好,但更系统的方法是取x值之间的差值,如下所示:

In [269]: np.diff(xs)
Out[269]: array([1, 1])
In [268]: plt.bar(xs, ys, width=0.9 * np.min(np.diff(xs)))
import matplotlib.pyplot as plt

data = [[1,100.1],[2,133.222],[3,198.0]]
x = map(lambda x: x[0], data)
y = map(lambda x: x[1], data)

plt.bar(x,y)
通常,x值的间距相等,但情况并非如此。您可能希望将宽度设置为x值之间的最小差值,因此条形图的生成方式如下:

In [269]: np.diff(xs)
Out[269]: array([1, 1])
In [268]: plt.bar(xs, ys, width=0.9 * np.min(np.diff(xs)))
import matplotlib.pyplot as plt

data = [[1,100.1],[2,133.222],[3,198.0]]
x = map(lambda x: x[0], data)
y = map(lambda x: x[1], data)

plt.bar(x,y)

我会选择这样的方式:

In [269]: np.diff(xs)
Out[269]: array([1, 1])
In [268]: plt.bar(xs, ys, width=0.9 * np.min(np.diff(xs)))
import matplotlib.pyplot as plt

data = [[1,100.1],[2,133.222],[3,198.0]]
x = map(lambda x: x[0], data)
y = map(lambda x: x[1], data)

plt.bar(x,y)

工作非常出色。谢谢你的帮助!