Cel*_*ydy 0 python plot matplotlib
我有一个列表列表,如下所示:
[[1,100.1],[2,133.222],[3,198.0]]
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用这些数据在 matplotlib 中绘制条形图,其中列表的每个元素中的第一个元素是 x 轴(它始终是 1-1000 之间的整数,没有重复),第二个元素是y 轴值。
我正在使用 Python 3。我将如何绘制它?
您需要将 x 值与 y 值分开。这可以通过zip:
第一的:
import numpy as np
import matplotlib.pypl as plt
Run Code Online (Sandbox Code Playgroud)
现在:
In [263]: lst = [[1,100.1],[2,133.222],[3,198.0]]
In [264]: xs, ys = [*zip(*lst)]
In [265]: xs
Out[265]: (1, 2, 3)
In [266]: ys
Out[266]: (100.1, 133.222, 198.0)
Run Code Online (Sandbox Code Playgroud)
现在绘制条形:
In [267]: plt.bar(xs, ys)
Run Code Online (Sandbox Code Playgroud)
条形图不会自动设置条形宽度。在当前情况下,宽度结果很好,但更系统的方法是获取 x 值之间的差异,如下所示:
In [269]: np.diff(xs)
Out[269]: array([1, 1])
Run Code Online (Sandbox Code Playgroud)
通常你有一个等距的 x 值,但这不一定是这种情况。您可能希望将宽度设置为 x 值之间的最小差异,因此可能会像这样生成条形图:
In [268]: plt.bar(xs, ys, width=0.9 * np.min(np.diff(xs)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3590 次 |
| 最近记录: |