use*_*320 4 python indexing heatmap multi-index pandas
感谢您花时间点击这个..!
对,我正在尝试制作热图.
我遇到的问题是我有这样的数据:
请看DataFrame的屏幕显示:
g.head(11)
Out = :
profit
a b
1.04 1.09 0.886
1.08 1.03 0.03
1.05 0.17
1.09 0.39
1.16 2.85
1.1 1.12 -0.346
1.14 0.34
1.29 1.23
1.11 1.06 0.87
1.08 1.23
1.09 -2.86
Run Code Online (Sandbox Code Playgroud)
这些值都是唯一的,这意味着a&b的每个组合只有一个利润
我想:绘制x,y的热图,颜色是z值.
我的x坐标是一个列表,以0.01为间隔从1.01到2.0
我的y坐标是一个相同的列表,例如[1.01,1.02,1.03 .. 1.99,2.0]所以我做了这个x&y的网格网格
我的z坐标我希望从上面的列中获得"利润",当x = a和b = y时,绘制利润
但我遇到了矢量化问题,使用x和y通过网格网格提取利润,并在a = x和b = y时查找利润.我将解释更多
使用x和y制作网格网格对于x和y的所有组合,找到a&b和查找利润,使用a = x和b = y如果不存在这样的组合,则返回0如果组合存在,如果利润为+,则绘制绿点如果利润为 - ,则绘制一个红点.利润越大,绿色越亮损失越大,红色越亮,零可以用蓝色表示
这是一个尝试,因为我做了一些代码..我已经改变了这么多尝试不同的事情,它可能没有多大意义,但你会得到我一直在努力做的事情的要点..
def z_func(x,y):
#print 'x = ',x
q = plotDF[(plotDF.x == x) & (plotDF.y == y)].profit.values
return q
#return x + y
#return x.astype(float) + y.astype(float)
X,Y = meshgrid(x, y) # grid of point
Z = z_func(X, Y) # evaluation of the function on the grid
im = imshow(Z,cmap=cm.RdBu) # drawing the function
colorbar(im)
show()
Run Code Online (Sandbox Code Playgroud)
伙计们,我一整天都在玩这个游戏,在网上阅读一些东西尝试查找(),同时取出了hierarahical索引,只有一个带有x,y和利润列的数据框......但我一直在犯傻错误,错误..我其实不知道自己在做什么!
任何人都可以对此有所了解吗?非常感谢!!!!!
Ps新年快乐2014家伙!
只需取消堆叠,而不是设置meshgrid.它将b列和叶子定位为a行,每个值都在正确的位置,并且NaN在a/b组合不存在的位置.你可以填0.
然后,而不是imshow,使用pcolor.
plt.pcolor(df.unstack().fillna(0))
Run Code Online (Sandbox Code Playgroud)
您可能需要使用sort_index按顺序获取列和行,具体取决于df设置.
这个答案有关但不完全相同.
| 归档时间: |
|
| 查看次数: |
1813 次 |
| 最近记录: |