python - 如何将标题文本添加到来自 figurefactory 的两个带注释的热图?
问题描述
我正在使用 plotly 创建两个带注释的热图。出于某种原因,当存在两个数字时,我无法添加 title_text。以下给了我一个错误说Invalid property specified for object of type plotly.graph_objs.Heatmap: 'title'
# Data Visualization
import plotly.figure_factory as ff
def confusion_matrix(class_indices):
train_z = [[2, 4],
[2, 4]]
val_z = [[6, 8],
[6, 8]]
x = ['True (1)', 'False (0)']
y = ['Negative', 'Positive']
# Turn each item in z into a string for annotation only
def string_annotation_converter(z_data):
z_text = [[str(y) for y in x] for x in z_data]
return z_text
# set up figure
train_confusion_mat = ff.create_annotated_heatmap(train_z, x=x, y=y,
colorscale='Viridis',
annotation_text=string_annotation_converter(train_z))
train_confusion_mat.update_layout(title_text=f'Training CM - {str(class_indices)}')
val_confusion_mat = ff.create_annotated_heatmap(val_z, x=x, y=y,
colorscale='Viridis',
annotation_text=string_annotation_converter(val_z),
title_text=f'Validation CM - {str(class_indices)}')
val_confusion_mat.update_layout(title_text=f'Validation CM - {str(class_indices)}')
confusion_matrix('title')
但是,当我删除我想要包含的第二个数字时,它突然起作用了?为什么会这样,我能做些什么来解决这个问题?:
# Data Visualization
import plotly.figure_factory as ff
def confusion_matrix(class_indices):
train_z = [[2, 4],
[2, 4]]
val_z = [[6, 8],
[6, 8]]
x = ['True (1)', 'False (0)']
y = ['Negative', 'Positive']
# Turn each item in z into a string for annotation only
def string_annotation_converter(z_data):
z_text = [[str(y) for y in x] for x in z_data]
return z_text
# set up figure
train_confusion_mat = ff.create_annotated_heatmap(train_z, x=x, y=y,
colorscale='Viridis',
annotation_text=string_annotation_converter(train_z))
train_confusion_mat.update_layout(title_text=f'Training CM - {str(class_indices)}')
confusion_matrix('title')
解决方案
这是因为您的第二个数字试图将值传递给title_text
. ff.create_annotated_heatmap
正如错误所说,这不是一个有效的属性。
您不会将此参数传递给第一个图形,这就是它起作用的原因。
所以改变这个:
val_confusion_mat = ff.create_annotated_heatmap(
val_z,
x=x,
y=y,
colorscale="Viridis",
annotation_text=string_annotation_converter(val_z),
title_text=f"Validation CM - {str(class_indices)}",
)
对此:
val_confusion_mat = ff.create_annotated_heatmap(
val_z,
x=x,
y=y,
colorscale="Viridis",
annotation_text=string_annotation_converter(val_z),
)
您已经更新了title_text
这两个数字,update_layout
因此您只需进行上述调整。
推荐阅读
- excel - 有没有办法在 Workbook.Open 中动态更改或指定 excel 文件的位置?
- java - Selenium Webdriver:如何绕过 Google 的“接受 cookie”对话框
- c - 为什么当我使用 switch 语句时我的变量没有更新?
- reactjs - 尝试使用 Material UI 时的 Hook Call 无效
- html - Html 数据收集
- reactjs - 如何在 SSR 项目中生成唯一 ID (Next.js)
- javascript - 隐藏和显示表格中的行
- python - 用 sympy 在 python 中求解方程
- java - 如何使用 thymeleaf th:each 将超链接添加到表的列?
- c++ - 如何过滤出结果以仅获取输出结果中的文件名linux在c ++ 98中