Matplotlib 中的散点图

25

这是我第一个matplotlib程序,对不起我不太了解。

我有两个字符串数组。假设A = ['test1','test2']B = ['test3','test4']。 如果AB元素之间存在任何相关性,它们的corr值将被设置为 1

        test1 | test2
test3 |   1   |   0

test4 |   0   |   1

现在,我想绘制一个散点图,其中我的X轴将是A的元素,Y轴将是B的元素,并且如果相关值为1,则会在散点图中标记。如何实现?


6
你尝试过什么? - Niek de Klein
1
我已经回答了你的问题,但是再读一遍,我不确定是否理解了它。A和B的元素真的是字符串吗?如何测试字符串的相关性?如果它们是数值,则只会得到一个相关性度量。从你的例子中,似乎'test1'和'test2'是列表。但是我不清楚你想要散点图的具体内容。我仍然会保留我的答案,以防有用,但如果你澄清一下会更有帮助。 - Akavall
嗨,是的,A和B的元素都是字符串,实际上表示两个文件名。我根据某些逻辑从另一个程序生成了相关值。 - bray
@bray - 所以你想要绘制一个布尔矩阵来表示你的相关系数值? - Joe Kington
1个回答

78
也许可以像这样:
import matplotlib.pyplot
import pylab

x = [1,2,3,4]
y = [3,4,8,6]

matplotlib.pyplot.scatter(x,y)

matplotlib.pyplot.show()

编辑:

让我确认一下,现在我的理解是:

您有:

       test1 | test2 | test3
test3 |   1   |   0  |  1

test4 |   0   |   1  |  0

test5 |   1   |   1  |  0

现在你想要用散点图来表示上述数值,其中数值为1的用一个点表示。

假设你的结果存储在一个二维列表中:

results = [[1, 0, 1], [0, 1, 0], [1, 1, 0]]
我们希望将它们转换为两个变量,以便我们能够绘制它们。我相信这段代码会给你想要的结果:
import matplotlib
import pylab


results = [[1, 0, 1], [0, 1, 0], [1, 1, 0]]

x = []
y = []

for ind_1, sublist in enumerate(results):
    for ind_2, ele in enumerate(sublist):
        if ele == 1:
            x.append(ind_1)
            y.append(ind_2)       


matplotlib.pyplot.scatter(x,y)

matplotlib.pyplot.show()

请注意,我确实需要导入pylab,你可能需要调整轴标签。而且这种感觉像是一个变通方法,可能会有(很可能有)一种直接的方法来做到这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接