gpt4 book ai didi

Python - pcolor 的 Pick_Event 获取 pandas 列和索引值

转载 作者:太空宇宙 更新时间:2023-11-03 15:29:47 27 4
gpt4 key购买 nike

我正在尝试为 pcolor 创建一个 pick_event ,到目前为止该事件运行良好。但是,我想获取底层 pandas DataFrame 的列和索引名称。使用 event.ind 我只得到一个值,该值似乎是通过忽略 nan 值来计算的。

最终我想使用列和索引名称从另一个具有相同索引和列值的 pandas DataFrame 返回一个值。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl

class colormap:
def __init__(self):
pass

def create(self):
fig, ax = plt.subplots()
data = pd.DataFrame(np.arange(0,12).reshape(3,4), index=['a', 'b', 'c'], columns=['A', 'B', 'C', 'D'], dtype=float)
data.set_value('a', 'B', np.nan)
data = np.ma.masked_where(np.isnan(data), data)

ax.pcolor(data, edgecolors='k', linewidths=0.2, cmap='RdBu', picker=1)
fig.canvas.mpl_connect('pick_event', self.onpick)
plt.show()

def onpick(self, event):
self.event = event
self.thisline = event.artist
ind = event.ind
print(ind)

if __name__ == '__main__':
self = colormap()
self.create()

最佳答案

一种选择是使用非屏蔽数组。如果您在 pcolor 中设置颜色限制,这将引发警告,但仍然有效。使用vminvmax 。为了使 nan 值变得透明,需要设置 colormap.set_under(color)为透明颜色。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

class colormap:
def __init__(self):
pass

def create(self):
fig, ax = plt.subplots()
self.data = pd.DataFrame(np.arange(0,12).reshape(3,4), index=['a', 'b', 'c'],
columns=['A', 'B', 'C', 'D'], dtype=float)
self.data.set_value('a', 'B', np.nan)
#data = np.ma.masked_where(np.isnan(data), data)
cmap = plt.cm.RdBu
cmap.set_under((0,0,0,0))
ax.pcolor(self.data, edgecolors='k', linewidths=0.2, cmap=cmap, picker=1,
vmin=0, vmax=11)
fig.canvas.mpl_connect('pick_event', self.onpick)
plt.show()

def onpick(self, event):
self.event = event
self.thisline = event.artist
ind = event.ind
x,y = np.unravel_index(ind, self.data.shape)
x,y = x[0],y[0]
print (x,y, self.data.iloc[x,y])

if __name__ == '__main__':
self = colormap()
self.create()

这样返回(n,m, self.data.iloc[n,m])(row, column, data[row,column]) .

关于Python - pcolor 的 Pick_Event 获取 pandas 列和索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42976693/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com