我正在尝试绘制正弦波,并且曲线的每个点的颜色都由其切线斜率值表示。例如,3600 * 1000
应填充一个数据框:
x_axis = list(range(0, 3601))
y_axis = list(range(-1000, 1001))
wave = pd.DataFrame(index = y_axis,columns= x_axis )
for i in range(0, 3601, 1):
y = int(round(np.sin(np.radians(i / 10)), 3) * 1000)
wave.loc[y, i] = -abs(y)
wave = wave.fillna(0)
wave[wave == 0] =np.nan
seaborn.heatmap(wave)
通过使用seaborn.heatmap(wave),将生成热图,就像附加的图像一样。但是我要寻找的是在一幅图片中绘制50-100个正弦波,因此数据帧的大小将大得多,达到360000 * 10000。在这种数据框大小的情况下,我仍然希望显示类似的热图,或者任何可以表示每个单元格值变化的类型或图形。我的工作站似乎通过将此数据集使用seaborn热图而冻结了。
我的一些想法是将所有值归一化0-255
并使用某些GLV绘图功能,但我仍在研究中。
您可以使用创建一个类似的图plt.scatter
:
import matplotlib.pyplot as plt
import numpy as np
x_axis = np.arange(0, 360, 0.1)
y = np.round(np.sin(np.radians(x_axis)), 3) * 1000
plt.scatter(x_axis, y, c=-np.abs(y), s=1, cmap='gist_heat')
plt.show()
要获得更宽的曲线,只需增加s
。要消除颜色表的白色部分,可以移动颜色限制(称为vmin
和vmax
)。标准值是给定颜色值的最小值和最大值。在这种情况下,最大值为0,最小值为-1000。设置vmax
为+100会保留10%的颜色范围。
plt.scatter(x_axis, y, c=-np.abs(y), vmax=0.1*y.max(), s=10, cmap='gist_heat')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句