Python中带有成对数据的热图
我正在尝试用Python制作热图。我制作了一个数据框,如下所示Python中带有成对数据的热图,python,python-3.x,charts,data-visualization,heatmap,Python,Python 3.x,Charts,Data Visualization,Heatmap,我正在尝试用Python制作热图。我制作了一个数据框,如下所示 custom_vals = [[.0, .0], [0,5], [0,10], [0,15], [0,20], [0,25], [5,0], [5,5], [5,10], [5,15], [5,20], [5,25], [10,0], [10,5], [10,10], [10,15], [10,20], [10,25], [15,0], [15
custom_vals = [[.0, .0], [0,5], [0,10], [0,15], [0,20], [0,25],
[5,0], [5,5], [5,10], [5,15], [5,20], [5,25],
[10,0], [10,5], [10,10], [10,15], [10,20], [10,25],
[15,0], [15,5], [15,10], [15,15], [15,20], [15,25],
[20,0], [20,5], [20,10], [20,15], [20,20], [20,25],
[25,0], [25,5], [25,10], [25,15], [25,20], [25,25]] # ordered pairs (G, H)
custom_predict = (np.around(model.predict(custom_vals), decimals=2))
predicted_vals = pd.DataFrame(data=custom_predict, index = ['0, 0', '0, 5','0, 10', '0, 15', '0, 20', '0, 25',
'5, 0', '5, 5','5, 10', '5, 15', '5, 20', '5, 25',
'10, 0', '10, 5','10, 10', '10, 15', '10, 20', '10, 25',
'15, 0', '15, 5','15, 10', '15, 15', '15, 20', '15, 25',
'20, 0', '20, 5','20, 10', '20, 15', '20, 20', '20, 25',
'25, 0', '25, 5','25, 10', '25, 15', '25, 20', '25, 25',], columns=[precip_levels])
predicted_vals
在图像中,y轴包含有序对(G
,H
)。概率表示给定一对y值的x值的概率。例如,在上表中,给定g和h=0时,x=0的概率为0.87
我想把它变成一张热图,上面有一个彩色的概率条。我的目标是分离有序对(指定为G
和H
——请参见上面代码中的注释),以便G
位于x轴,而H
位于y轴。我一次只想担心一个x值。例如,我想将如下内容制作成一张热图
我如何在Python中执行类似的操作?我对任何图书馆都开放。我建议使用
seaborn
:
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# Create dummy data
data = np.array(np.random.rand(5, 5))
fig,ax = plt.subplots()
fig.set_figheight(7)
fig.set_figwidth(7)
sns.heatmap(data, annot = True)
plt.show()
我建议使用
seaborn
:
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# Create dummy data
data = np.array(np.random.rand(5, 5))
fig,ax = plt.subplots()
fig.set_figheight(7)
fig.set_figwidth(7)
sns.heatmap(data, annot = True)
plt.show()
Seaborn
是一个非常棒的数据可视化库,也是熊猫的好朋友。我强烈建议您有一天阅读他们的文档
对于您的问题,有一个非常简单的解决方案。由于custom\u predict
是通过您的特定函数获得的,因此我使用了一些随机数据作为示例
由于原始数据帧中的x
预测值有多个值,我们可能希望根据x
的所需值对其进行过滤(在您的情况下为0)
此外,我们还创建了两列x
和y
,这两列将是custom\u vals
提供的坐标。这将如下所示:
0 x y
0,0 0.84 0.0 0.0
0,5 0.06 0.0 5.0
0,10 0.95 0.0 10.0
0,15 0.70 0.0 15.0
0,20 0.19 0.0 20.0
x 0.0 5.0 10.0 15.0 20.0 25.0
y
0.0 0.84 0.73 0.37 0.75 0.55 0.67
5.0 0.06 0.58 0.69 0.86 0.76 0.54
10.0 0.95 0.02 0.59 0.30 0.79 0.36
15.0 0.70 0.10 0.19 0.92 0.04 0.24
20.0 0.19 0.77 0.74 0.12 0.14 0.87
25.0 0.48 0.34 0.99 0.80 0.56 0.43
Nextm我们需要它看起来像一个真实的热图,由一个数据框给出,索引
对应于y
值,列
对应于x
值。这是通过使用pivot\u表
my_heatmap = desired_df.pivot_table(index='x', columns='y', values=desired_val)
这为我们提供了如下数据帧:
0 x y
0,0 0.84 0.0 0.0
0,5 0.06 0.0 5.0
0,10 0.95 0.0 10.0
0,15 0.70 0.0 15.0
0,20 0.19 0.0 20.0
x 0.0 5.0 10.0 15.0 20.0 25.0
y
0.0 0.84 0.73 0.37 0.75 0.55 0.67
5.0 0.06 0.58 0.69 0.86 0.76 0.54
10.0 0.95 0.02 0.59 0.30 0.79 0.36
15.0 0.70 0.10 0.19 0.92 0.04 0.24
20.0 0.19 0.77 0.74 0.12 0.14 0.87
25.0 0.48 0.34 0.99 0.80 0.56 0.43
最后,我们可以绘制热图。我们需要seaborn
和matplotlib.pyplot
进行可视化
import seaborn as sns
import matplotlib.pyplot as plt
sns.heatmap(my_heatmap, cmap='plasma')
plt.show()
通过将关键字参数cmap
更改为多个matplotlib颜色映射名称之一(您可以检查它们),可以选择其他颜色映射
如果您还有其他问题,请告诉我们
Seaborn
是一个很棒的数据可视化库,也是熊猫的好朋友。我强烈建议您有一天阅读他们的文档
对于您的问题,有一个非常简单的解决方案。由于custom\u predict
是通过您的特定函数获得的,因此我使用了一些随机数据作为示例
由于原始数据帧中的x
预测值有多个值,我们可能希望根据x
的所需值对其进行过滤(在您的情况下为0)
此外,我们还创建了两列x
和y
,这两列将是custom\u vals
提供的坐标。这将如下所示:
0 x y
0,0 0.84 0.0 0.0
0,5 0.06 0.0 5.0
0,10 0.95 0.0 10.0
0,15 0.70 0.0 15.0
0,20 0.19 0.0 20.0
x 0.0 5.0 10.0 15.0 20.0 25.0
y
0.0 0.84 0.73 0.37 0.75 0.55 0.67
5.0 0.06 0.58 0.69 0.86 0.76 0.54
10.0 0.95 0.02 0.59 0.30 0.79 0.36
15.0 0.70 0.10 0.19 0.92 0.04 0.24
20.0 0.19 0.77 0.74 0.12 0.14 0.87
25.0 0.48 0.34 0.99 0.80 0.56 0.43
Nextm我们需要它看起来像一个真实的热图,由一个数据框给出,索引
对应于y
值,列
对应于x
值。这是通过使用pivot\u表
my_heatmap = desired_df.pivot_table(index='x', columns='y', values=desired_val)
这为我们提供了如下数据帧:
0 x y
0,0 0.84 0.0 0.0
0,5 0.06 0.0 5.0
0,10 0.95 0.0 10.0
0,15 0.70 0.0 15.0
0,20 0.19 0.0 20.0
x 0.0 5.0 10.0 15.0 20.0 25.0
y
0.0 0.84 0.73 0.37 0.75 0.55 0.67
5.0 0.06 0.58 0.69 0.86 0.76 0.54
10.0 0.95 0.02 0.59 0.30 0.79 0.36
15.0 0.70 0.10 0.19 0.92 0.04 0.24
20.0 0.19 0.77 0.74 0.12 0.14 0.87
25.0 0.48 0.34 0.99 0.80 0.56 0.43
最后,我们可以绘制热图。我们需要seaborn
和matplotlib.pyplot
进行可视化
import seaborn as sns
import matplotlib.pyplot as plt
sns.heatmap(my_heatmap, cmap='plasma')
plt.show()
通过将关键字参数cmap
更改为多个matplotlib颜色映射名称之一(您可以检查它们),可以选择其他颜色映射
如果您还有其他问题,请告诉我们
maptlotlib
hashist2d
()和plotly
hasheatmap
()您能否解释一下如何从预测值中获取热图数据?predicted\u vals
的输出是否与上面的图像对应?maptlotlib
具有hist2d
()和plotly
具有heatmap
()能否请您进一步解释一下如何从predicted\u vals
获得热图数据?predicted\u val
的输出是否与上面的图像对应?我得到TypeError:在这一行中,只有整数标量数组可以转换为标量索引
?我使用自己的数据创建了数据框,可能您的数据与我创建它的方式非常不同:precip_levels=np.sort(pd.unique(df['category_Y_Variable']))print(precip_levels)#outpus[0.5.10.15.20.25.]
-谢谢!哦,我想我明白问题所在了。创建数据帧时,请尝试将关键字参数从columns=[precip\u levels]
更改为columns=precip\u levels
(不带方括号)。我得到TypeError:此行只有整数标量数组可以转换为标量索引
您知道如何解决此问题吗?如何创建变量精确级别
?我使用自己的数据创建了数据框,可能您的数据与我创建它的方式非常不同:precip_levels=np.sort(pd.unique(df['category_Y_Variable']))print(precip_levels)#outpus[0.5.10.15.20.25.]
-谢谢!哦,我想我明白问题所在了。创建数据帧时,请尝试将关键字参数从columns=[precip\u levels]
更改为columns=precip\u levels
(不带方括号)。