我有这样的数据:
ID x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
1 -0.18 5 -0.40 -0.26 0.53 -0.66 0.10 2 -0.20 1
2 -0.58 5 -0.52 -1.66 0.65 -0.15 0.08 3 3.03 -2
3 -0.62 5 -0.09 -0.38 0.65 0.22 0.44 4 1.49 1
4 -0.22 -3 1.64 -1.38 0.08 0.42 1.24 5 -0.34 0
5 0.00 5 1.76 -1.16 0.78 0.46 0.32 5 -0.51 -2
什么是可视化此数据的最佳方法,我使用matplotlib对其进行可视化,并使用pandas从csv中读取它
感谢
答案 0 :(得分:15)
在高维空间中可视化数据始终是一个难题。常用的一种解决方案(and is now available in pandas
)是检查数据的所有1D和2D投影。它没有提供有关数据的所有信息,但除非您能在10D中看到,否则无法进行可视化!这是一个如何使用pandas(版本0.7.3向上)执行此操作的示例:
import numpy as np
import pandas as pd
from pandas.tools.plotting import scatter_matrix
#first make some fake data with same layout as yours
data = pd.DataFrame(np.random.randn(100, 10), columns=['x1', 'x2', 'x3',\
'x4','x5','x6','x7','x8','x9','x10'])
#now plot using pandas
scatter_matrix(data, alpha=0.2, figsize=(6, 6), diagonal='kde')
这将生成一个图表,其中所有2D投影都是散点图,以及一维投影的KDE直方图:
我在my github page上也有一个纯粹的matplotlib方法,它产生一种非常相似的绘图类型(它是为MCMC输出设计的,但在这里也是合适的)。这是你在这里使用它的方式:
import corner_plot as cp
cp.corner_plot(data.as_matrix(),axis_labels=data.columns,nbins=10,\
figsize=(7,7),scatter=True,fontsize=10,tickfontsize=7)
答案 1 :(得分:0)
您可以随时更改绘图,对于您绘制不同"维度的每个瞬间"数据帧。 这里有一个关于如何绘制随时间变化的绘图的示例,您可以根据自己的需要进行调整
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111)
plt.grid(True)
plt.hold(False)
x = np.arange(-3, 3, 0.01)
for n in range(15):
y = np.sin(np.pi*x*n) / (np.pi*x*n)
line, = ax.plot(x, y)
plt.draw()
plt.pause(0.5)