Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中带有成对数据的热图_Python_Python 3.x_Charts_Data Visualization_Heatmap - Fatal编程技术网

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

我正在尝试用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,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
has
hist2d
()和
plotly
has
heatmap
()您能否解释一下如何从
预测值中获取热图数据?
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
(不带方括号)。