作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 plotly 上制作带注释的热图。
import plotly.plotly as py
import plotly.tools as tls
from plotly.graph_objs import *
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('masterc.csv')
locations = {}
anno = []
for i in range(df.shape[0]):
locations.setdefault((df.iat[i,2],df.iat[i,6]),0)
locations[(df.iat[i,2],df.iat[i,6])]+=df.iat[i,8]
x1 = []
y1 = []
z1 = []
z1_text = []
for key in locations.keys():
if key[0] not in x1:
x1 += [key[0],]
if key[1] not in y1:
y1 += [key[1],]
for y in y1:
dummy = []
for x in x1:
if (x,y) in locations.keys():
dummy += [locations[(x,y)],]
else:
dummy += [0,]
z1 += [dummy,]
data = z1
arr = np.array(data)
fig, ax = plt.subplots()
ax.imshow(data, cmap='seismic')
for (i, j), z in np.ndenumerate(data):
ax.text(j, i, '{:f}'.format(z), ha='center', va='center')
ax.set_xticklabels(x1, rotation=90)
ax.set_yticklabels(y1)
#plt.show()
py.plot_mpl(fig)
Warning (from warnings module):
File "C:\Python27\lib\site-packages\plotly\matplotlylib\renderer.py", line 394
warnings.warn("Aw. Snap! You're gonna have to hold off on "
UserWarning: Aw. Snap! You're gonna have to hold off on the selfies for now. Plotly can't import images from matplotlib yet!
Traceback (most recent call last):
File "E:\Project Kumbh\heatmap with annotations.py", line 58, in <module>
py.plot_mpl(fig)
File "C:\Python27\lib\site-packages\plotly\plotly\plotly.py", line 261, in plot_mpl
return plot(fig, **plot_options)
File "C:\Python27\lib\site-packages\plotly\plotly\plotly.py", line 155, in plot
figure = tools.return_figure_from_figure_or_data(figure_or_data, validate)
File "C:\Python27\lib\site-packages\plotly\tools.py", line 1409, in return_figure_from_figure_or_data
if not figure['data']:
KeyError: 'data'
最佳答案
编辑
现在可以使用 plotly.figure_factory
轻松完成:
https://plot.ly/python/annotated_heatmap/
据我所知,仍然无法将 Matplotlib 的热图转换为 Plotly 的热图。
2015 年 8 月 回答
这是使用 python api 制作带注释的热图的示例:
import plotly.plotly as py
import plotly.graph_objs as go
x = ['A', 'B', 'C', 'D', 'E']
y = ['W', 'X', 'Y', 'Z']
# x0 x1 x2 x3 x4
z = [[0.00, 0.00, 0.75, 0.75, 0.00], # y0
[0.00, 0.00, 0.75, 0.75, 0.00], # y1
[0.75, 0.75, 0.75, 0.75, 0.75], # y2
[0.00, 0.00, 0.00, 0.75, 0.00]] # y3
annotations = go.Annotations()
for n, row in enumerate(z):
for m, val in enumerate(row):
annotations.append(go.Annotation(text=str(z[n][m]), x=x[m], y=y[n],
xref='x1', yref='y1', showarrow=False))
colorscale = [[0, '#3D9970'], [1, '#001f3f']] # custom colorscale
trace = go.Heatmap(x=x, y=y, z=z, colorscale=colorscale, showscale=False)
fig = go.Figure(data=go.Data([trace]))
fig['layout'].update(
title="Annotated Heatmap",
annotations=annotations,
xaxis=go.XAxis(ticks='', side='top'),
yaxis=go.YAxis(ticks='', ticksuffix=' '), # ticksuffix is a workaround to add a bit of padding
width=700,
height=700,
autosize=False
)
print py.plot(fig, filename='Stack Overflow 31756636', auto_open=False) # https://plot.ly/~theengineear/5179
关于matplotlib - 如何在 plotly 上绘制带注释的热图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31756636/
我是一名优秀的程序员,十分优秀!