首页 > 编程问答 >如何根据 DataFrame 的单列而不是默认计算的总大小在 go.Cone 中分配颜色?

如何根据 DataFrame 的单列而不是默认计算的总大小在 go.Cone 中分配颜色?

时间:2024-07-26 16:31:45浏览次数:14  
标签:python plotly visualization plotly.graph-objects

我正在使用 Plotly 的 go.Cone 函数来可视化 3D 数据。在我的图中,我用位置 (x, y, z) 和方向 (u, v, w) 表示圆锥体,其中分量 u、v 和 w 对应于每个方向上的力。目前,图中的颜色条默认基于力矢量的总大小 (sqrt(u^2 + v^2 + w^2))。

但是,由于我对力进行归一化以保持如果锥体大小相同,则此默认色阶不合适,因为所有值最终都小于或等于 1。我希望颜色条仅反映我使用的 DataFrame 中特定列的值,而不是综合大小。换句话说,我希望每个锥体根据 DataFrame 中在其位置处预先计算的值进行着色,而不考虑默认大小。

我对力进行了标准化,因为以前存在大小问题,导致一些大的锥体和许多太小,如图 1 所示:

fig1 在此处输入图像描述

使用归一化数据生成的图像如下所示: Fig2 在此处输入图像描述

这是我正在使用的代码:

fig = go.Figure(data=go.Cone(
    x=df[“x”], y=df[“y”], z=df[“z”],
    u=df[“Force_x”]/df[“Force_Mag”], v=df[“Force_y”]/df[“Force_Mag”], w=df[“Force_z”]/df[“Force_Mag”],
    colorscale=‘Viridis’, colorbar=dict(title=‘Force Mag’),
    hovertext=df[“Aminoacido”], # text for info
    hoverinfo=“x+y+z+text+norm”,
    sizemode=“absolute”, sizeref=10, # cone size
fig.show()
))

DataFrame 已经在 df["Force_Mag"] 中具有大小,这是我想用于着色和设置的列颜色条。我尝试了几种方法但没有成功。有没有办法用 go.Cone 来实现这种类型的可视化?

提前感谢您的帮助!

尝试使用类似的东西:

color=df['force_mag']|| |但它不兼容,我希望添加一个颜色图,而不是 go.cone 中默认使用的颜色图

but it is not compatible, I was hoping to add a colormap other than the default one plotly uses in go.cone


当然可以,可以通过将 cone.colorscale 属性设置为的 'Force_Mag' 列来根据 DataFrame 中的单个列在 go.Cone 中分配颜色。以下是如何执行此操作的方法:

import plotly.graph_objects as go

# 假设的 DataFrame 名为 'df',其中包含 'x'、'y'、'z'、'Force_x'、'Force_y'、'Force_z' 和 'Force_Mag' 列

# 创建锥体图
fig = go.Figure(data=go.Cone(
    x=df['x'], y=df['y'], z=df['z'],
    u=df['Force_x'], v=df['Force_y'], w=df['Force_z'],
    colorscale='Viridis',  # 选择喜欢的 colorscale
    color=df['Force_Mag'],  # 将颜色设置为 'Force_Mag' 列
    colorbar=dict(title='Force Mag'),
    hovertext=df['Aminoacido'],
    hoverinfo='x+y+z+text+norm',
    sizemode='absolute',
    sizeref=10
))

fig.show()

说明:

  1. color=df['Force_Mag'] 此行是关键。它告诉 go.Cone 使用 'Force_Mag' 列中的值作为每个锥体的颜色。

  2. colorscale='Viridis' 这将为的颜色分配 'Viridis' colorscale。可以将其替换为任何其他 Plotly colorscale

通过进行此更改,的颜色条和锥体现在将根据 'Force_Mag' 列中的值进行着色,而不是计算出的矢量大小。

标签:python,plotly,visualization,plotly.graph-objects
From: 78795692

相关文章

  • 在 Python 中将 Kivy 文件选择器添加到 PopUp
    我一直在尝试通过应用程序的按钮释放创建文件选择器弹出窗口。我分别管理了FileChooser和Popups,但无法将两者一起解决,这里有人可以帮助解决问题吗?我正在尝试用Python而不是Kivy.lang来实现PopUp,因为这是我在弹出窗口方面的经验。我也无法让KivyDoc示例正常工作。我......
  • Python基础知识点(1)基本语句
    基本语句1.if语句if表达式:语句块其中,表达式是一个返回True或False的表达式。如果表达式为True,则执行if下面的语句块;如果为False,则跳过语句块执行下面的语句。2.if…else语句if表达式:语句块1else:语句块2其中,表达式是一个返回True或False的表达式。如果......
  • 使用Python实现深度学习模型:语言翻译与多语种处理
    引言语言翻译和多语种处理是自然语言处理(NLP)中的重要任务,广泛应用于跨语言交流、国际化应用和多语言内容管理等领域。通过使用Python和深度学习技术,我们可以构建一个简单的语言翻译与多语种处理系统。本文将介绍如何使用Python实现这些功能,并提供详细的代码示例。所需工具......
  • python框架之Flask
    之前写过有关flask-restful: https://www.cnblogs.com/xingxia/p/flask_restful.html虽然早期使用python进行web应用搭建的使用该框架,但是好像很少总结,在此记录一下 [安装]pip3installflask [使用]#导入类库fromflaskimportFlask#创建实例......
  • Python 搜索和抓取
    我有一个问题想知道是否值得花时间尝试用Python来解决。我有一个包含鱼类学名的大型CSV文件。我想将该CSV文件与大型鱼类形态信息数据库(www.fishbase.ca)交叉引用,并让代码返回每条鱼的最大长度。基本上,我需要创建代码来搜索Fishbase网站上的每条鱼,然后找到页面上的最......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-54- 上传文件(input控件) - 上篇
    1.简介在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等。所以宏哥打算按上传文件的分类对其进行一下讲解和分享。2.上传文件的API(input控件)Playwright是一个现代化的自动化测试工具,它支持多种浏览器和操作系统,可以帮助开发人员和......
  • python requests 报错 Caused by ProxyError ('Unable to connect to proxy', OSError
    背景:访问https接口,使用http代理版本:requests:2.31.0 从报错可以看出,是proxy相关的报错调整代码,设定不使用代理,将http与https对应的proxy值置空即可(尝试过proxies={},但此写法不生效)proxies={'http':'','https':''}response = requests.get('https://xxx......
  • python基础函数
    1.为什么使用函数使用函数的目的是去减少代码的冗余性,简化代码的复杂度2.如何去定义一个函数以def开头去进行相关的定义在def的后面我们就去以见明知意的方式去定义一个函数的名称在函数名称后面的括号中去添加参数值,可以是多个参数,也可以是无餐的3.函数的调用无参多......
  • 不使用 + 或 - 运算符 | 添加 2 个数字Python
    我一直在尝试编写逻辑,但测试用例失败。如何改进我的代码?代码:#Giventwointegersaandb,returnthesumofthetwointegerswithoutusingtheoperators+and-.a=-1b=1min_val=min(a,b)max_val=max(a,b)ifmin_val==max_val:pr......
  • python 中的智能 Cisco IOS 差异
    之前:hostnameFoo!interfaceGigabitEthernet1/1switchportmodetrunkswitchporttrunkallowedvlan10,20,30!interfaceGigabitEthernet1/2ipaddress192.0.2.1255.255.255.128noipproxy-arp!之后:hostnameFoo!interfaceGigabitEt......