如何在KDE散点图中调整颜色?

时间:2019-08-03 15:07:03

标签: python-3.x matplotlib scatter-plot colorbar kde

我编写了一个程序来绘制示波器数据并使用色条绘制KDE散点图。不幸的是,它需要第三方库(readTrc)以及大小为200MB的示波器二进制文件filelib可以在github上找到。

import pandas as pd
import readTrc
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import collections
from scipy.stats import gaussian_kde

trcpath = 'filename.trc'    #Binary Oscilloscope File (200 MB)
datX, datY, m = readTrc.readTrc(trcpath)
srx, sry = pd.Series(datX * 1000), pd.Series(datY * 1000)
df = pd.concat([srx, sry], axis = 1)
df.set_index(0, inplace = True)
df = df.abs()               #Build Dataframe from above file

fig = plt.figure()

#Eliminate Noise
df[df < 3] = None
df = df.dropna()

#x and y axes data to plot
q1 = np.array(df[1].tolist()[:-2])
q2 = np.array(df[1].tolist()[1:-1])
q3 = np.array(df[1].tolist()[2:])
dq1 = q2 - q1
dq2 = q3 - q2

#Create first Dataset
qqstack = []
xy = np.vstack([dq1,dq2])

#Determine max value for colorbar (highest repeating x/y combination)
df_d = pd.DataFrame([dq1,dq2]).T
for idx, row in df_d.iterrows():
    if row[0] == row[1]:
        qqstack.append((row[0], row[1]))
cbar_max = collections.Counter(qqstack).most_common(1)[0][-1]

#sort to show most present values last
z = gaussian_kde(xy)(xy)
idx = z.argsort()
x, y, z = dq1[idx], dq2[idx], z[idx]

#plot graph
plt.scatter(x, y,
            c=z,
            s=20,
            cmap = plt.cm.get_cmap('jet'))

#create colormap variable
sm = plt.cm.ScalarMappable(cmap = plt.cm.get_cmap('jet'),
                           norm = matplotlib.colors.PowerNorm(vmin = -0.1, vmax = cbar_max, gamma = 1))
sm._A = []

fig.colorbar(sm, ticks = range(0, cbar_max, 250))
plt.grid(zorder = 0, alpha = 0.3)
plt.xlabel('dq1 / mV')
plt.ylabel('dq2 / mV')
plt.show()

enter image description here

如何调整绘图中的颜色分配?我希望减少蓝色空间,以便可以看到更多过渡效果,如下图所示:

enter image description here

0 个答案:

没有答案