Ram*_*uet 3 numpy matplotlib pandas
我有一个numpy数组的列表,每个数组可能都有不同数量的元素,例如:
[array([55]),
array([54]),
array([], dtype=float64),
array([48, 55]),]
Run Code Online (Sandbox Code Playgroud)
我想绘制此图,其中每个数组都分配了一个横坐标(x值),例如,[1,2,3,4]以便该图应显示以下几点:[[1,55], [2, 54], [4, 48], [4, 55]]。有什么办法可以用matplotlib做到这一点吗?或者我该如何首先用numpy或pandas转换数据,以便可以绘制数据?
您想要做的是链接原始数组并生成一个带有“横坐标”的新数组。连接的方法很多,最有效的方法之一是使用itertools.chain。
import itertools
from numpy import array
x = [array([55]), array([54]), array([]), array([48, 55])]
ys = list(itertools.chain(*x))
# this will be [55, 54, 48, 55]
# generate abscissas
xs = list(itertools.chain(*[[i+1]*len(x1) for i, x1 in enumerate(x)]))
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用matplotlib轻松绘制,如下所示
import matplotlib.pyplot as plt
plt.plot(xs, ys)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
502 次 |
| 最近记录: |