私はそのようなデータフレームを持っています:
Value Std Reciever type
Station ID
ABMF 3.588 0.492 TRIMBLE NETR9
AIRA 8.820 0.256 TRIMBLE NETR9
AREG 7.306 0.356 TRIMBLE NETR9
BRST 6.712 0.166 TRIMBLE NETR9
BRUX 3.151 0.151 SEPT POLARX4TR
... ... ...
WTZR 12.374 0.158 LEICA GRX1200+GNSS
WTZZ 1.906 0.179 JAVAD TRE_G3TH DELTA
WUH2 4.422 0.534 JAVAD TRE_G3TH DELTA
ZIM2 11.244 0.171 TRIMBLE NETR5
ZIM3 11.971 0.185 TRIMBLE NETR9
[80 rows x 3 columns]
そして、私はそのような集約に基づいて視覚化を作成しようとしています:
df = (df.groupby(by=['Station ID'])
.agg({'Value': np.average, 'Std': np.average, 'Reciever type': 'first'})
)
dcb_plot = plt.figure(figsize=(16,9))
plt.title('Receiver Code Biases for {} station(s) ({})'.format(station, year))
plt.xlabel('Station(s)')
plt.ylabel('DCB in ns')
plt.errorbar(df.index, df['Value'], yerr=df['Std'], marker='o', fmt='o', ms=5, capsize=5, elinewidth=1)
ax = plt.gca()
ax.axes.xaxis.set_ticklabels([])
ax.yaxis.set_minor_locator(AutoMinorLocator())
ax.tick_params(which='major', length=8)
ax.tick_params(which='minor', length=4, color='r')
Reciever type
列内の値に基づいてカラーマップを作成したいと思います(色付きのエラーバーもいいでしょう)。どうやってやるの?理解を深めるために、これが私の望ましい出力です。
重要なのは、カラーマップから色を生成することです。ここではdfを使用しませんが、データに簡単に適応できるはずです。
from sklearn.datasets import make_blobs
import numpy as np
import matplotlib.pyplot as plt
n_samples = 100
random_state = 170
X, y = make_blobs(n_samples=n_samples, random_state=random_state, centers=3)
names = {0:'a', 1:'b', 2:'c'}
all_names = np.array([names[e] for e in y])
n = len(np.unique(all_names))
# this is how your map colors
colors = plt.cm.Spectral(np.arange(n)/np.arange(n).max())
fig, ax = plt.subplots(1, 1, figsize=(7.2, 7.2))
for i, e in enumerate(np.unique(all_names)):
mask = all_names == e
ax.errorbar(X[:, 0][mask], X[:, 1][mask], yerr=0.5, marker='o', fmt='o', ms=5, capsize=5, elinewidth=1, label=e, c=colors[i])
ax.legend()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加