相关疑难解决方法(0)

Matplotlib中的平行坐标图

可以使用传统的绘图类型相对直观地查看二维和三维数据.即使使用四维数据,我们也经常可以找到显示数据的方法.但是,高于4的尺寸变得越来越难以显示.幸运的是,平行坐标图提供了一种查看更高维度结果的机制.

来自维基百科的示例平行坐标图

几个绘图包提供了平行坐标图,例如Matlab,R,VTK类型1VTK类型2,但我没有看到如何使用Matplotlib创建一个.

  1. Matplotlib中是否有内置的平行坐标图?我当然没有在画廊看到一个.
  2. 如果没有内置类型,是否可以使用Matplotlib的标准功能构建平行坐标图?

编辑:

根据以下振亚提供的答案,我开发了以下支持任意数量轴的概括.按照我在上面原始问题中发布的示例的绘图样式,每个轴都有自己的比例.我通过对每个轴点的数据进行归一化并使轴的范围为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 …
Run Code Online (Sandbox Code Playgroud)

python matplotlib parallel-coordinates

47
推荐指数
5
解决办法
3万
查看次数

标签 统计

matplotlib ×1

parallel-coordinates ×1

python ×1