これを試したようですが、カウントをプロットすると、データが正しく表示されているようです。しかし、それは本当にあなたがあなたのデータで見つけようとしているものに依存します、それはあなたに何を伝えるべきでしょうか?
長い実行時間の理由は、非常に多くの行をプロットすることによるものですが、カウントに基づくヒートマップはかなり迅速にプロットされます。
ノイズに基づいて、洞結膜のダミーデータを作成しました。線、振幅、シフトの数ボックスプロットとヒートマップの両方を追加しました。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
import random
import pandas as pd
np.random.seed(0)
#create dummy data
N = 200
sinuses = []
no_lines = 200
for i in range(no_lines):
a = np.random.randint(5, 40)/5 #amplitude
x = random.choice([int(N/5), int(N/(2/5))]) #random shift
sinuses.append(np.roll(a * np.sin(np.linspace(0, 2 * np.pi, N)) + np.random.randn(N), x))
fig = plt.figure(figsize=(20/2.54, 20/2.54))
sins = pd.DataFrame(sinuses,)
ax1 = plt.subplot2grid((3,10), (0,0), colspan=10)
ax2 = plt.subplot2grid((3,10), (1,0), colspan=10)
ax3 = plt.subplot2grid((3,10), (2,0), colspan=9)
ax4 = plt.subplot2grid((3,10), (2,9))
# plot line data
sins.T.plot(ax=ax1, color='lightblue',linewidth=.3)
ax1.legend_.remove()
ax1.set_xlim(0, N)
# try boxplot
sins.plot.box(ax=ax2, showfliers=False)
xticks = ax2.xaxis.get_major_ticks()
for index, label in enumerate(ax2.get_xaxis().get_ticklabels()):
xticks[index].set_visible(False) # hide ticks where labels are hidden
#make a list of bins
no_bins = 20
bins = list(np.arange(sins.min().min(), sins.max().max(), int(abs(sins.min().min())+sins.max().max())/no_bins))
bins.append(sins.max().max())
# calculate histogram
hists = []
for col in sins.columns:
count, division = np.histogram(sins.iloc[:,col], bins=bins)
hists.append(count)
hists = pd.DataFrame(hists, columns=[str(i) for i in bins[1:]])
print(hists.shape, '\n', hists.head())
cmap = mpl.colors.ListedColormap(['white', '#FFFFBB', '#C3FDB8', '#B5EAAA', '#64E986', '#54C571',
'#4AA02C', '#347C17', '#347235', '#25383C', '#254117'])
#heatmap
im = ax3.pcolor(hists.T, cmap=cmap)
cbar = plt.colorbar(im, cax=ax4)
yticks = np.arange(0, len(bins))
yticklabels = hists.columns.tolist()
ax3.set_yticks(yticks)
ax3.set_yticklabels([round(i,1) for i in bins])
ax3.set_title('Count')
yticks = ax3.yaxis.get_major_ticks()
for index, label in enumerate(ax3.get_yaxis().get_ticklabels()):
if index % 3 != 0: #make some labels invisible
yticks[index].set_visible(False) # hide ticks where labels are hidden
plt.show()
![enter image description here](https://i.stack.imgur.com/q9Lex.png)
箱ひげ図が解釈するのは簡単ですが、それは非常によく、実際のデータの分布を示していないが、中央値及び分位数がどこにあるか知ることが有用であろう。
1行あたりの行数と値の量を増やすと、線のプロット時間が大幅に長くなりますが、生成するヒートマップはまだかなり速いです。しかし、ボックスプロットは目立たなくなります。
![enter image description here](https://i.stack.imgur.com/Ab1Ay.png)
私は正確にあなたのデータを複製(またはそれの実際のサイズを知っている)、おそらくヒートマップは役に立つかもしれませんでした。