Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在matplotlib中制作多个图形,每个图形上都有图例_Python_Python 2.7_Matplotlib - Fatal编程技术网

Python 在matplotlib中制作多个图形,每个图形上都有图例

Python 在matplotlib中制作多个图形,每个图形上都有图例,python,python-2.7,matplotlib,Python,Python 2.7,Matplotlib,我正在尝试平行制作多个人物,每个人物都有自己的传奇。我的代码生成多个图形,但我只能让图例显示在最后一个图形实例上——有没有办法让它显示在所有图形上?我有大量的数据集,所以我希望能够使用for循环(或类似的循环)——单独制作每个图形实际上不是一个选项 我在下面列出了一个再现问题的最小工作示例 import numpy as np import matplotlib.pyplot as plt X1 = np.linspace(0,5,5) X2 = np.linspace(1,6,5) Y1 =

我正在尝试平行制作多个人物,每个人物都有自己的传奇。我的代码生成多个图形,但我只能让图例显示在最后一个图形实例上——有没有办法让它显示在所有图形上?我有大量的数据集,所以我希望能够使用for循环(或类似的循环)——单独制作每个图形实际上不是一个选项

我在下面列出了一个再现问题的最小工作示例

import numpy as np
import matplotlib.pyplot as plt

X1 = np.linspace(0,5,5)
X2 = np.linspace(1,6,5)
Y1 = np.power(X1,2)
Y2 = np.power(X2,2)
Z1 = np.power(X1,3)
Z2 = np.power(X2,3)

Xs = [X1,X2]
Ys = [Y1,Y2]
Zs = [Z1,Z2]

# Marker size
size = 100

for x,y,z, in zip(Xs,Ys,Zs):
    plt.figure()
    ax = plt.subplot(111)
    ax.scatter(x,y,linewidth=1.5,s=size,facecolors='#0571b0',marker='o',alpha=0.5,label='A label')
    ax.scatter(x,z,linewidth=1.5,s=size,facecolors='#92c5de',marker='o',alpha=0.5,label='Another label')
    plt.legend(bbox_to_anchor=(1.45,1.), loc='top left',scatterpoints=1,fontsize=8)

plt.show()

图例似乎不在图中。您将其放置在
(1.45,1)
(在轴坐标中。将其放置在(1,1)并设置位置,例如设置为
loc=“右上方”
(注意,“左上方”不存在),将在绘图中生成图例

以下是完整的示例:

import numpy as np
import matplotlib.pyplot as plt

X1 = np.linspace(0,5,5)
X2 = np.linspace(1,6,5)
Xs = [X1,X2]
Ys = [X1**2,X2**2]
Zs = [X1**3,X2**3]

# Marker size
size = 100

for x,y,z, in zip(Xs,Ys,Zs):
    plt.figure()
    ax = plt.subplot(111)
    ax.scatter(x,y,linewidth=1.5,s=size,facecolors='#0571b0',marker='o',alpha=0.5,label='A label')
    ax.scatter(x,z,linewidth=1.5,s=size,facecolors='#92c5de',marker='o',alpha=0.5,label='Another label')
    plt.legend(bbox_to_anchor=(1,1), loc='upper right',scatterpoints=1,fontsize=8)

plt.show()

图例似乎不在图中。您将其放置在
(1.45,1)
(在轴坐标中。将其放置在(1,1)并设置位置,例如设置为
loc=“右上方”
(注意,“左上方”不存在),将在绘图中生成图例

以下是完整的示例:

import numpy as np
import matplotlib.pyplot as plt

X1 = np.linspace(0,5,5)
X2 = np.linspace(1,6,5)
Xs = [X1,X2]
Ys = [X1**2,X2**2]
Zs = [X1**3,X2**3]

# Marker size
size = 100

for x,y,z, in zip(Xs,Ys,Zs):
    plt.figure()
    ax = plt.subplot(111)
    ax.scatter(x,y,linewidth=1.5,s=size,facecolors='#0571b0',marker='o',alpha=0.5,label='A label')
    ax.scatter(x,z,linewidth=1.5,s=size,facecolors='#92c5de',marker='o',alpha=0.5,label='Another label')
    plt.legend(bbox_to_anchor=(1,1), loc='upper right',scatterpoints=1,fontsize=8)

plt.show()

啊哈,谢谢!这很有效。我就知道我在做傻事。我还有一个问题-在你的解决方案中,我对图例所做的编辑(例如fontsize)只出现在除最后一个图形实例之外的所有图形实例中。最后一个图形实例没有得到这些编辑-你知道这是为什么吗?我如何确保所有图例都相同?我无法复制此问题。当我运行上述操作时,两个图例都是相同的。而且当我更改fontsize时,它将对两个图例产生相同的影响。啊,谢谢!Tha我知道我在做傻事。我还有一个问题——在你的解决方案中,我对图例所做的编辑(例如fontsize)仅出现在除最后一个地物实例之外的所有实例中。最后一个地物实例没有得到这些编辑-你知道这是为什么吗?我如何确保所有图例都相同?我无法复制此问题。当我运行上述操作时,两个图例都是相同的。此外,当我更改fontsize时,它将对两个图例产生相同的影响。