可以用传统土地类型来比较直截了当地看待2和3个层面的数据。 即便有四个方面的数据,我们往往找到显示数据的方法。 然而,四面以上的因素越来越难以显示。 幸运的是,。
http://www.mathwork.com/help/tool Box/stats/parallelcoords.html
- Is there a built-in parallel coordinates plot in Matplotlib? I certainly don t see one in the gallery.
- If there is no built-in-type, is it possible to build a parallel coordinates plot using standard features of Matplotlib?
http://www.ohchr.org。
根据下文“振民”的答复,我制定了以下概括性,支持任意数量的轴心。 我在上述最初问题中所举的例子的地皮风格之后,每个轴心都有自己的规模。 我通过使每个轴心点的数据实现正常化,使轴心范围达到0到1。 然后,我回头并贴上每一标记的标签,这些标识在拦截时具有正确的价值。
该功能通过接收数据集的可操作性而发挥作用。 每一数据集都被视为不同轴线上每一点的一组点。 <代码>main__中每一轴体的随机编号为两组30条。 这条线是任意的,造成线路的集中;我要核实的行为。
这种解决办法是一种内在的解决办法,因为你有奇怪的改变行为,我通过标签缩小数据范围,但在Matplotlib增加一个内在的解决办法之前,这种解决办法是可以接受的。
#!/usr/bin/python
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
def parallel_coordinates(data_sets, style=None):
dims = len(data_sets[0])
x = range(dims)
fig, axes = plt.subplots(1, dims-1, sharey=False)
if style is None:
style = [ r- ]*len(data_sets)
# Calculate the limits on the data
min_max_range = list()
for m in zip(*data_sets):
mn = min(m)
mx = max(m)
if mn == mx:
mn -= 0.5
mx = mn + 1.
r = float(mx - mn)
min_max_range.append((mn, mx, r))
# Normalize the data sets
norm_data_sets = list()
for ds in data_sets:
nds = [(value - min_max_range[dimension][0]) /
min_max_range[dimension][2]
for dimension,value in enumerate(ds)]
norm_data_sets.append(nds)
data_sets = norm_data_sets
# Plot the datasets on all the subplots
for i, ax in enumerate(axes):
for dsi, d in enumerate(data_sets):
ax.plot(x, d, style[dsi])
ax.set_xlim([x[i], x[i+1]])
# Set the x axis ticks
for dimension, (axx,xx) in enumerate(zip(axes, x[:-1])):
axx.xaxis.set_major_locator(ticker.FixedLocator([xx]))
ticks = len(axx.get_yticklabels())
labels = list()
step = min_max_range[dimension][2] / (ticks - 1)
mn = min_max_range[dimension][0]
for i in xrange(ticks):
v = mn + i*step
labels.append( %4.2f % v)
axx.set_yticklabels(labels)
# Move the final axis ticks to the right-hand side
axx = plt.twinx(axes[-1])
dimension += 1
axx.xaxis.set_major_locator(ticker.FixedLocator([x[-2], x[-1]]))
ticks = len(axx.get_yticklabels())
step = min_max_range[dimension][2] / (ticks - 1)
mn = min_max_range[dimension][0]
labels = [ %4.2f % (mn + i*step) for i in xrange(ticks)]
axx.set_yticklabels(labels)
# Stack the subplots
plt.subplots_adjust(wspace=0)
return plt
if __name__ == __main__ :
import random
base = [0, 0, 5, 5, 0]
scale = [1.5, 2., 1.0, 2., 2.]
data = [[base[x] + random.uniform(0., 1.)*scale[x]
for x in xrange(5)] for y in xrange(30)]
colors = [ r ] * 30
base = [3, 6, 0, 1, 3]
scale = [1.5, 2., 2.5, 2., 2.]
data.extend([[base[x] + random.uniform(0., 1.)*scale[x]
for x in xrange(5)] for y in xrange(30)])
colors.extend([ b ] * 30)
parallel_coordinates(data, style=colors).show()
<><>><>>>>
这里的一个例子是上述法典在编造。 它是Wikipedia的参考形象的ice,但如果你们都有马特图布,你需要多维的地块,那是可喜的。