【问题标题】:How to produce separate scatter plots for each data in python?如何为python中的每个数据生成单独的散点图?
【发布时间】:2020-05-26 06:31:07
【问题描述】:

我有一个列表列表,其中每个列表都表示为一个特征向量:

Matrix=[[12,43,65,78,54,43,76,98],
[23,465,90,9,32,75,324,12],
[67,43,21,56,32,7,4,9],
[3,9,0,67,23,12,65,97]]

我还有另一个特征向量作为 fvector:

fvector=[54,76,12,55,88,75,32,3]

我想用 fvector 分别为矩阵的每个列表绘制散点图,但是当我尝试通过迭代每个列表进行绘制时,它会绘制在同一个图上:

我试过这个:

import matplotlib.pyplot as plt
for i in Matrix:
    plt.scatter(i,fvector)

我得到的输出是:

但我想要单独绘制每个矩阵图,是否可以绘制单独的小图? 任何参考资料或资源都会有所帮助。

谢谢

【问题讨论】:

  • plt.scatter()之前调用plt.figure()

标签: python python-3.x matplotlib plot scatter-plot


【解决方案1】:

您可以使用子图在同一个图上创建多个图。

for i, item in enumerate(Matrix,1):
    plt.subplot(2, 2, i)
    plt.scatter(item, fvector)
plt.show()

如果矩阵中有四个以上的列表,那么我们可以将它们分成四个一组,并为每组 4 个列表生成单独的数字。请检查以下内容:

for j in range(0, len(Matrix), 4):  
    for i, item in enumerate(Matrix[j:j+4],1):
        plt.subplot(2, 2, i)
        plt.scatter(item, fvector)
    plt.show()

希望这会有所帮助!

【讨论】:

  • 谢谢,但如果我在 Matrix 中有 10 个列表怎么办。它给出 ValueError: num must be 1
  • 那么你只需要将 plt.subpot(2,2,i) 改为 plt.subplot(5,2,i) 或 plt.subplt(2,5,i)。换句话说,您需要找到两个值 n 和 m,使得 n*m 等于 Matrix 列表的长度。
  • 但它也会减小尺寸
  • 我明白了。我想你应该将矩阵分成 4 个列表的组并继续生成图。
  • 我们该怎么做?请你帮帮我
【解决方案2】:
for i in Matrix:
    plt.scatter(i,fvector)
    plt.show()

应该这样做

【讨论】:

    【解决方案3】:

    您需要使用子图来使用多个轴

    fig, ax = plt.subplots(2)
    

    情节看起来像:

    axs[0].plot(x1, y)
    axs[1].plot(x2, y)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-19
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多