web-dev-qa-db-ja.com

MatPlotLib:同じ散布図上の複数のデータセット

同じ散布図に複数のデータセットをプロットしたい:

_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()
_

上記は最新の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()
_
60

同じサブプロットに描画し続けるには、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()

enter image description here

95
nate c

私はまったく同じ問題を抱えていたので、この質問に出会いました。受け入れられた答えはうまくいきますが、matplotlibバージョン2.1.0Axesへの参照を使用せずに1つのプロットに2つの散布図を含めることは非常に簡単です。

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()
15
Sohaib Farooqi

私にはわかりません、それは私のためにうまくいきます。正確なコマンド:

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()
5
Steve Tjoa

ここで説明するように、データがデータフレームで表される場合、Pandasでこれを簡単に行うこともできます。

http://pandas.pydata.org/pandas-docs/version/0.15.0/visualization.html#scatter-plot

1
MaVe