需要用seaborn创建热图,但似乎无法实现或完全掌握如何实现
每个组件(行)都需要出现在热图上。左侧(y轴)应显示每个组件的EID
。有很多,所以如果每10-20个只有1个被标记,那就好了。x轴上应为ROTATION1
{EXTRA
列与热图无关
热图应表示的值为ROT
{160
{
某些行对于所有列ROTATION1-ROTATION5都是空白的,但组件仍应包含在热图中(并且不显示颜色)
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| EID | EXTRA | ROTATION1 | ROTATION2 | ROTATION3 | ROTATION4 | ROTATION5 |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| AB1178 | POS | FLIP | | STILL | 172 | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| EC8361 | NEG | | | | | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| QS7229 | POS | | | 160 | | ROT |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| SE0447 | NEG | ROT | STILL | | | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| YT5489 | NEG | | | | | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| SZ2548 | NEG | 164 | | | FLIP | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| OT6892 | POS | FLIP | | | | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| PL3811 | POS | | | | STILL | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| WQ0893 | POS | | | ROT | | 170 |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| TY3551 | NEG | 160 | FLIP | | | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| PC6466 | POS | | 180 | 176 | | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| YH5912 | POS | | | | | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| BK6245 | NEG | | | | STILL | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| GQ2081 | POS | | | | 162 | FLIP |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| GF8633 | NEG | | | | | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| FJ4895 | NEG | | 174 | | ROT | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| YD2504 | POS | | | | | 162 |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| RF3510 | POS | | | | | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| PN6167 | NEG | | 168 | FLIP | | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| RB9747 | POS | FLIP | | STILL | 178 | STILL |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| BQ0841 | NEG | | ROT | | | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| HJ5187 | NEG | | | | | |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| BP2359 | POS | 168 | STILL | | | ROT |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
| FN6198 | POS | ROT | | | 172 | FLIP |
+--------+-------+-----------+-----------+-----------+-----------+-----------+
我所尝试的:
df = pd.read_csv('DATA.csv')
df = pd.DataFrame(df, columns = ['EID', 'ROTATION1','ROTATION2', 'ROTATION3', 'ROTATION4', 'ROTATION5'])
in_range = list(range(160,181, 2))
direction = ['ROT', 'FLIP', 'STILL']
elements = direction + ([str(num) for num in num_range])
sensing = sns.load_dataset("df")
sensing = sensing.pivot("EID", ['EID', 'ROTATION1','ROTATION2', 'ROTATION3', 'ROTATION4', 'ROTATION5'], elements)
heatmap = sns.heatmap(sensing)
这不起作用,因为我认为“x轴”元素应该是列的形式,而不是多行的形式?如果有人能告诉我如何绕道那就太好了
需要结果:
右侧带有“颜色图例栏”的热图,以ROT
{EID
,但实际的数据集大约有200行,因此每10或20行表示一行就可以了。
热图中应该有5列,每列代表ROTATION1
到ROTATION5
我没有经验,只是需要一点帮助
使用Python2.7和PANDAS 0.24.2以及seaborn 0.9.1
首先,您需要将数据中的所有值转换为数字类型,
int
,例如:然后,您应该将每个数值映射到相应的标签,并准备颜色映射:
我选择了
'tab20'
颜色映射,因为您需要15种不同的颜色,而这个颜色映射是one of the few,包含足够的颜色。然后可以绘制热图:
最后,您需要调整颜色映射:
完整代码
用于检查的带注释的热图:
无注释的热图:
我不建议使用连续颜色映射:可能很难区分一个值和下一个值。
但是,如果需要,可以对所有值或仅对数字值使用连续颜色贴图。
(当然,您可以保留或删除批注)
colormap
'plasma'
仅用于数值,白色用于nan
s,RGB用于分类值:colormap
'plasma'
用于所有值:相关问题 更多 >
编程相关推荐