2 つのデータ セットがあり、エラー バーを使用して互いに隣り合わせに散布図を作成したいと考えています。以下は、1 つのデータ セットをエラー バーでプロットするコードです。また、2 番目のデータ セットを生成するコード。各値の各データのポイントとエラーを隣接させたいです。
また、点と点を結ぶ線を削除したいと思います。
import random
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as ss
data = []
n = 100
m = 10
for i in xrange(m):
d = []
for j in xrange(n):
d.append(random.random())
data.append(d)
mean_data = []
std_data = []
for i in xrange(m):
mean = np.mean(data[i])
mean_data.append(mean)
std = np.std(data[i])
std_data.append(std)
df_data = [n] * m
plt.errorbar(range(m), mean_data, yerr=ss.t.ppf(0.95, df_data)*std_data)
plt.scatter(range(m), mean_data)
plt.show()
new_data = []
for i in xrange(m):
d = []
for j in xrange(n):
d.append(random.random())
new_data.append(d)
mean_new_data = []
std_new_data = []
for i in xrange(m):
mean = np.mean(new_data[i])
mean_new_data.append(mean)
std = np.std(new_data[i])
std_new_data.append(std)
df_new_data = [n] * m
散布図の線を削除するにはfmt
、plt.errorbar() の引数を使用します。plt.scatter()
呼び出しは、もはや必要ありません。2 番目のデータ セットをプロットするplt.errorbar()
には、新しいデータで 2 回目の呼び出しを行うだけです。
データセットをオーバーラップさせたくない場合は、新しいデータセットに x の小さなランダムな散布図を追加できます。これは 2 つの方法で行うことができます。単一の散布フロートを追加します。
random.uniform(-x_scatter, x_scatter)
これにより、すべてのポイントが 1 つに移動します。
または、各ポイントのランダムな散布フロートを生成します
x_scatter = np.random.uniform(-.5, .5, m)
のようなものを生成します
(2 番目の方法を使用して) 両方のデータセットをプロットするには、次を使用できます。
plt.errorbar(
range(m), mean_data, yerr=ss.t.ppf(0.95, df_data)*std_data, fmt='o',
label="Data")
# Add some some random scatter in x
x_scatter = np.random.uniform(-.5, .5, m)
plt.errorbar(
np.arange(m) + x_scatter, mean_new_data,
yerr=ss.t.ppf(0.95, df_new_data)*std_new_data, fmt='o', label="New data")
plt.legend()
plt.show()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加