MatPlotLib:同一散点图上的多个数据集

Aus*_*son 65 python matplotlib scipy

我想在同一个散点图上绘制多个数据集:

cases = scatter(x[:4], y[:4], s=10, c='b', marker="s")
controls = scatter(x[4:], y[4:], s=10, c='r', marker="o")

show()
Run Code Online (Sandbox Code Playgroud)

以上仅显示最新的 scatter()

我也尝试过:

plt = subplot(111)
plt.scatter(x[:4], y[:4], s=10, c='b', marker="s")
plt.scatter(x[4:], y[4:], s=10, c='r', marker="o")
show()
Run Code Online (Sandbox Code Playgroud)

nat*_*e c 99

您需要对Axes对象的引用以继续绘制在同一子图上.

import matplotlib.pyplot as plt

x = range(100)
y = range(100,200)
fig = plt.figure()
ax1 = fig.add_subplot(111)

ax1.scatter(x[:4], y[:4], s=10, c='b', marker="s", label='first')
ax1.scatter(x[40:],y[40:], s=10, c='r', marker="o", label='second')
plt.legend(loc='upper left');
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • `fig.add_subplot(111)中的`111`是什么意思? (9认同)
  • 这是该图中子图的排列.第一个数字是多少行子图; 第二个数字是多少列子图; 第三个数字是你现在谈论的子图.在这种情况下,有一行和一列子图(即一个子图),轴正在讨论它们中的第一个.像fig.add_subplot(3,2,5)这样的东西将是三行两列网格中的左下角子图. (2认同)
  • 如果我需要绘制三个散点图而不是此处显示的两个散点图怎么办? (2认同)

Soh*_*oqi 17

我遇到了这个问题,因为我遇到了同样的问题.虽然接受的答案效果很好,但是使用matplotlib版本2.1.0,在一个图中有两个散点图而不使用引用是非常简单的Axes

import matplotlib.pyplot as plt

plt.scatter(x,y, c='b', marker='x', label='1')
plt.scatter(x, y, c='r', marker='s', label='-1')
plt.legend(loc='upper left')
plt.show()
Run Code Online (Sandbox Code Playgroud)


Ste*_*joa 6

我不知道,它对我来说很好.确切的命令:

import scipy, pylab
ax = pylab.subplot(111)
ax.scatter(scipy.randn(100), scipy.randn(100), c='b')
ax.scatter(scipy.randn(100), scipy.randn(100), c='r')
ax.figure.show()
Run Code Online (Sandbox Code Playgroud)