来自 Pandas 混淆矩阵的散景热图

2024-03-04

熊猫怎么能DataFrame显示为散景热图?

https://docs.bokeh.org/en/latest/docs/user_guide/categorical.html#heat-maps https://docs.bokeh.org/en/latest/docs/user_guide/categorical.html#heat-maps显示了一些示例,但尝试修改总是只给出一个空图。

混淆矩阵示例:

df = pd.DataFrame([[10, 0, 1], [1, 10, 0], [1, 1, 9]], 
                  columns=['A', 'B', 'C'], 
                  index=['A', 'B', 'C'])
df.index.name = 'Treatment'
df.columns.name = 'Prediction'

首先导入包并准备 data.frame :

import pandas as pd

from bokeh.io import output_file, show
from bokeh.models import BasicTicker, ColorBar, LinearColorMapper, ColumnDataSource, PrintfTickFormatter
from bokeh.plotting import figure
from bokeh.transform import transform

df = pd.DataFrame(
    [[10, 0, 1], [1, 10, 0], [1, 1, 9]],
    columns=['A', 'B', 'C'],
    index=['A', 'B', 'C'])
df.index.name = 'Treatment'
df.columns.name = 'Prediction'

要使用我的解决方案,您必须stack数据框:

# Prepare data.frame in the right format
df = df.stack().rename("value").reset_index()

现在,我们可以创建绘图:

# here the plot :
output_file("myPlot.html")

# You can use your own palette here
colors = ['#d7191c', '#fdae61', '#ffffbf', '#a6d96a', '#1a9641']

# Had a specific mapper to map color with value
mapper = LinearColorMapper(
    palette=colors, low=df.value.min(), high=df.value.max())
# Define a figure
p = figure(
    plot_width=800,
    plot_height=300,
    title="My plot",
    x_range=list(df.Treatment.drop_duplicates()),
    y_range=list(df.Prediction.drop_duplicates()),
    toolbar_location=None,
    tools="",
    x_axis_location="above")
# Create rectangle for heatmap
p.rect(
    x="Treatment",
    y="Prediction",
    width=1,
    height=1,
    source=ColumnDataSource(df),
    line_color=None,
    fill_color=transform('value', mapper))
# Add legend
color_bar = ColorBar(
    color_mapper=mapper,
    location=(0, 0),
    ticker=BasicTicker(desired_num_ticks=len(colors)))

p.add_layout(color_bar, 'right')

show(p)

*注意:我使用比仅仅调用更完整的解决方案HeatMap来自 bokeh 库,因为 1)您可以更好地控制这样的参数,2)与 Bokeh、Pandas 等有很多不兼容性,这是唯一适合我的配置的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

来自 Pandas 混淆矩阵的散景热图 的相关文章

随机推荐

  • 我可以使用常量名称的变量来访问 PHP 类常量吗? [复制]

    这个问题在这里已经有答案了 当访问类常量时 我 发现可以使用变量作为类名 例如 classname CONST VALUE 如果我想使用变量作为常量名称怎么办 例如self constant 这似乎不起作用 有解决方法吗 variable
  • Google OAuth 2.0 增量授权不起作用

    我有一个服务器端应用程序 需要访问 Google API 的组合 对于我们应用程序的某些用户 我们只需要访问一个 API 一组范围 例如 Google Drive 对于其他用户来说 需要访问另一个 API 范围 例如G 对于某些我们需要访问
  • 将 json 字符串反序列化为对象 - Silverlight

    今天下午我花了很长时间尝试在字符串中实现 JSON 的反序列化 一开始我使用的是数据契约Json序列化器因为我的环境是 Silverlight 但它似乎不支持使用开箱即用的字典 在许多其他问题中提出 作为替代方案 我决定暂时使用 JSON
  • openpyxl python 中自定义系列标题

    我正在尝试修改现有的 xlsx 表并使用 python 中的 openpyxl 模块向其中添加图形 但是在创建折线图时 系列标题显示为系列 1 系列 2 系列 3 系列 4 因为我需要将系列标题重命名为 A B C D 注意 该名称不是从任
  • ListView findViewById 返回 null

    我没有使用 ListActivity 因为我想扩展 FragmentActivity 相反 我尝试使用 ListView lv ListView findViewById R id mainListView 不幸的是 lv 为空 在我的 x
  • 如果是 JPG 图像,QLabel() 将不会加载像素图

    我想有一个QLabel 显示一个pixmap文件中的 JPG 图像 不能位于资源文件中 因为它是从网络下载的 但我在加载它时遇到问题 代码相当简单 label QLabel label setPixmap QPixmap image jpg
  • Promise 链与 Promise.all

    我的任务是使用量角器输入通知日期 我需要在输入之前清除内容 所以我想出了这个代码 this Then I should enter Notification Date gt const d new Date return orderChec
  • 如何更新 Visual Studio 的“用于验证的级联样式表版本”

    在我的 Visual Studio 2010 中 用于验证的级联样式表版本 针对的是 CSS 版本 2 1 如何更新 VS 以定位 CSS 版本 3 我刚刚下载并安装了 Mojtaba kaviani 的 CSS 3 智能感知架构 http
  • Opencv 矩阵乘法

    我需要将矩阵及其转置相乘 但出现以下错误 OpenCV Error Assertion failed type B type type CV 32FC1 type CV 64FC1 type CV 32FC2 type CV 64FC2 i
  • Flutter:任务“:app:compileDebugKotlin”执行失败

    我尝试运行默认的颤动应用程序颤动创建在我的 Android 设备上 但它引发了一个错误 有人可以帮忙吗 在调试模式下在 SM G610F 上启动 lib main dart 运行 Gradle 任务 assembleDebug 失败 构建失
  • 创建 backref 时 SQLAlchemy 关系引发参数错误

    我正在尝试建立一对多的关系 以便每个咖啡馆都可以有很多评论 然而 SQLAlchemy 提出了一个ArgumentError定义关系时 我该如何修复这个错误 class Review db Model id db Column db Int
  • 我可以使用 HTML 输入类型“日期”仅收集年份吗?

    我有一个字段需要从用户那里收集年份 即具有年份分辨率的日期 为了便于存储 我更愿意存储实际的日期值而不是数字 我想使用现代浏览器支持的日期输入 UI 或webshims https afarkas github io webshim dem
  • 删除分组 UITableView 中的角阴影/偏移

    当 UITableViewStyleGrouped 类型的 UITableView 的背景视图是 iPad 上的非默认颜色或图案图像时 圆角会有一条丑陋的额外线条 有点像斜角效果或投影 有谁知道有什么方法可以消除表格底部的多余线条吗 iPa
  • 在新窗口中打开 html 链接,没有浏览器工具栏

    我知道我可以使用 target blank 在新窗口中打开 html 链接 但是 如何隐藏 禁用所有浏览器工具栏 你应该使用window open url to open window name toolbar no
  • 最好的java jabber客户端库[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 您对 java jabber 库有哪些好的 坏的经历 我有过非常好的经验Smack http www igniterealtime org pr
  • Ruby 是如何实现完全面向对象的?

    所以 我很好奇 Ruby 为什么是一种完全面向对象的语言 我偶然发现了一个我不太清楚的问题 如果我定义一个函数如下 def foo text print text end 我在类之外定义了该函数 那么该函数如何成为对象 我意识到我可以打电话
  • 了解基本的 SQL 查询

    我有一个查询 例如 SELECT tran number FROM table a WHERE customer id IN SELECT customer id FROM table b WHERE customer key 89564
  • 将对象添加到现有对象数组 - JavaScript

    我创建了一个包含 2 个对象的数组 我希望编写一个 添加 函数来动态地将更多人添加到该数组中 您能解释一下为什么下面的 add 函数没有成功地将对象添加到 contacts 数组中吗 var bob firstName Bob lastNa
  • 如何使用 Meteor 执行常见的 FB 操作?

    使用 Meteor 执行常见 Facebook 操作需要执行哪些步骤accounts facebook包裹 我正在尝试获取好友列表 在墙上发布并最终执行其他操作 但我不确定如何继续 更新 对meteor 0 6 0略有修改 您需要使用 AP
  • 来自 Pandas 混淆矩阵的散景热图

    熊猫怎么能DataFrame显示为散景热图 https docs bokeh org en latest docs user guide categorical html heat maps https docs bokeh org en