我想用热图表示相关矩阵.R中有一个叫做correlogram的东西,但我不认为Python中有这样的东西.
我怎样才能做到这一点?值从-1到1,例如:
[[ 1. 0.00279981 0.95173379 0.02486161 -0.00324926 -0.00432099]
[ 0.00279981 1. 0.17728303 0.64425774 0.30735071 0.37379443]
[ 0.95173379 0.17728303 1. 0.27072266 0.02549031 0.03324756]
[ 0.02486161 0.64425774 0.27072266 1. 0.18336236 0.18913512]
[-0.00324926 0.30735071 0.02549031 0.18336236 1. 0.77678274]
[-0.00432099 0.37379443 0.03324756 0.18913512 0.77678274 1. ]]
Run Code Online (Sandbox Code Playgroud)
我能够根据另一个问题生成以下热图,但问题是我的值被'切'为0,所以我希望有一个从蓝色(-1)到红色(1)的地图,或者类似的东西,但这里低于0的值没有以适当的方式呈现.
这是代码:
plt.imshow(correlation_matrix,cmap='hot',interpolation='nearest')
Run Code Online (Sandbox Code Playgroud) 我有一个非常大的矩阵(10x55678),采用"numpy"矩阵格式.该矩阵的行对应于一些"主题",列对应于单词(来自文本语料库的唯一单词).该矩阵中的每个条目i,j是概率,意味着单词j以概率x属于主题i.因为我使用的是id而不是真实的单词,因为我的矩阵的维度非常大,我需要以某种方式对其进行可视化.你建议使用哪种可视化?一个简单的情节?或者更复杂和信息量更大的一个?(我问这些因为我对可用的可视化类型一无所知).如果可能,你能给我一个使用numpy矩阵的例子吗?谢谢
我问这个问题的原因是我希望对我的语料库中的单词主题分布有一个大致的看法.欢迎任何其他方法
假设我们有 x,y 坐标作为输入,其中 x 在范围 (0,300) & y 在范围 (0,400) 我想将所有这些坐标绘制为宽度介于 (0,300) 和之间的矩形网格中的热图(0,400) 之间的高度。
使用 seaborn 或 matplotlib,我可以绘制散点图,但很难将这些点绘制为热图。
x = numpy.random.randint(0, high=50, size=5000, dtype='l')
y = numpy.random.randint(0, high=50, size=5000, dtype='l')
Run Code Online (Sandbox Code Playgroud)
因此,如果我的样本大小是 5000 个点,并且所有点都几乎在 x as (0,50) & y as (0,50) 的范围内,在 300x400 的矩形空间中表示它们应该证明 50x50 空间中的坐标密度最高.
有人可以指导我如何表示这些数据吗?
为了测试和绘制散点图,我使用了 seaborn 的 lmplot 函数。
df = pd.DataFrame()
df['x'] = pd.Series(numpy.random.randint(0, high=320, size=5000, dtype='l'))
df['y'] = pd.Series(numpy.random.randint(0, high=480, size=5000, dtype='l'))
sns.set_style('whitegrid')
sns.lmplot('x','y',data=df,
palette='coolwarm',size=10,fit_reg=False)
plt.show()
Run Code Online (Sandbox Code Playgroud)