首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在堆叠的水平条形图中将跟踪文本居中对齐

如何在堆叠的水平条形图中将跟踪文本居中对齐
EN

Stack Overflow用户
提问于 2018-12-19 17:58:32
回答 3查看 2.2K关注 0票数 3

我有一个堆叠的水平条,我希望为每个轨迹定义的文本放置在相应条的中心。如果不使用anotations,我找不到一个属性来设置这个属性,但是我想为每个跟踪使用"text“,并且能够对齐它。

我在Jupyter上使用Plotly 3.4.1 (Plotly offline)。除了尝试使用注释之外,我找不到任何关于如何做到这一点的文档,如果我想精确定位一个明确的坐标,这看起来是一个更合适的解决方案。我想要的是一个简单得多的(类似"align":"center"),但是在go.Bar下找不到任何属性

只想让"80","20“出现在中心位置,而不是靠右对齐

代码语言:javascript
运行
AI代码解释
复制
from plotly.offline import iplot, plot, init_notebook_mode
import plotly.graph_objs as go

def getStackedSentimentHbar():
    trace0 = go.Bar(
        y=["A","B"],
        x=[20,80],
        orientation = 'h',
        text=["20","80"],
        textposition="inside",
        hoverinfo = "none",
    )
    trace1 = go.Bar(
        y=["A","B"],
        x=[80,20],
        orientation = 'h',
        text=["80","20"],
        textposition="inside",
        hoverinfo = "none",
    )
    data = [trace0,trace1]
    layout = go.Layout(
        barmode='stack',
        showlegend=False,
        xaxis=dict(
            showgrid=False,
            zeroline=False,
            showline=False,
            ticks='',
            showticklabels=False
        ),
        yaxis=dict(
            showgrid=False,
            zeroline=False,
            showline=False,
            ticks='',
            showticklabels=True
        ),
        margin = dict(
            l = 200, 
            r = 50, 
            b = 50, 
            t = 50, 
            pad = 10
        ),
        font=dict(
            family='Heebo', 
            size=18, 
            color='#000000'
        )
    )
    fig = go.Figure(data=data, layout=layout)
    return fig

init_notebook_mode()
fig = getStackedSentimentHbar()
iplot(fig)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-20 11:32:00

据我所知,在Plotly中没有这样的参数,但我们可以随时修改为Plotly :)

让我们只复制所有的x和y值,但保留text的原样。

在下面的代码中有两个函数,getStackedSentimentHbargetStackedSentimentHbarCentered。第一个返回原始图,第二个返回带有(几乎)居中标签的图。

代码语言:javascript
运行
AI代码解释
复制
from plotly.offline import iplot, plot, init_notebook_mode
import plotly.graph_objs as go

LAYOUT = go.Layout(
        barmode='stack',
        showlegend=False,
        xaxis=dict(
            showgrid=False,
            zeroline=False,
            showline=False,
            ticks='',
            showticklabels=False
        ),
        yaxis=dict(
            showgrid=False,
            zeroline=False,
            showline=False,
            ticks='',
            showticklabels=True
        ),
        margin = dict(
            l = 200, 
            r = 50, 
            b = 50, 
            t = 50, 
            pad = 10
        ),
        font=dict(
            family='Heebo', 
            size=18, 
            color='#000000'
        )
    )

def getStackedSentimentHbar(values):

    data = []
    for i, x in enumerate(values['x']):
        trace = go.Bar(
            x=x,
            y=values['y'][i],
            orientation='h',
            text=x,
            textposition='inside',
            hoverinfo = 'none',
        )
        data.append(trace)

    fig = go.Figure(data=data, layout=LAYOUT)
    return fig

def getStackedSentimentHbarCentered(values):

    data = []
    for i, x in enumerate(values['x']):

        trace = go.Bar(
            x=[int(i / 2) for i in x * 2],
            y=values['y'][i] * 2,
            orientation = 'h',
            text=x,
            textposition='inside',
            hoverinfo = 'none'
        )
        data.append(trace)

    fig = go.Figure(data=data, layout=LAYOUT)
    return fig

values = {'x': [[20, 80], [80, 20]],
          'y': [['A', 'B'], ['A', 'B']]}

init_notebook_mode()
fig = getStackedSentimentHbarCentered(values)
iplot(fig)
票数 1
EN

Stack Overflow用户

发布于 2021-06-20 00:37:58

一种更好的方法--使用单独的注释。

代码语言:javascript
运行
AI代码解释
复制
var x1A = 20;
var x1B = 80;
var x2A = 80;
var x2B = 20;
var trace1 = {
  y: ['A', 'B'],
  x: [x1A, x1B],
  type: 'bar',
  orientation: 'h',
};

var trace2 = {
  y: ['A', 'B'],
  x: [x2A, x2B],
  type: 'bar',
  orientation: 'h',
};

var data = [trace1, trace2];

var layout = {
  barmode: 'stack',
  annotations: [
    { x: x1A / 2, y: 'A', text: '20', showarrow: false },
    { x: x1A + x2A / 2, y: 'A', text: '80', showarrow: false },
    { x: x1B / 2, y: 'B', text: '80', showarrow: false },
    { x: x1B + x2B / 2, y: 'B', text: '20', showarrow: false },
  ],
};

Plotly.newPlot('myDiv', data, layout);
代码语言:javascript
运行
AI代码解释
复制
<head>
    <!-- Load plotly.js into the DOM -->
    <script src='https://cdn.plot.ly/plotly-2.0.0.min.js'></script>
</head>

<body>
    <div id='myDiv'><!-- Plotly chart will be drawn inside this DIV --></div>
</body>

下面是Plotly官方文档中的一个示例:https://plotly.com/python/horizontal-bar-charts/#color-palette-for-bar-chart

票数 0
EN

Stack Overflow用户

发布于 2021-11-21 16:57:02

正如在回答this问题时所提到的,通过设置insidetextanchor="start" (或“中间”或“结束”)可以更容易地实现这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53856826

复制
相关文章
Spring boot web程序static资源放在jar外部
spring boot程序的static目录默认在resources/static目录, 打包为jar的时候,会把static目录打包进去,这样会存在一些问题: static文件过多,造成jar包体积过大 临时修改不方便 查看官方文档,可以发现,static其实是可以外置的。 方法1 直接修改配置文件 spring.resources.static-locations=file:///E://resources/static 自定义Configuration方法 @Configuration public
JadePeng
2018/04/16
1.6K0
Spark UDF加载外部资源
由于Spark UDF的输入参数必须是数据列column,在UDF中进行如Redis查询、白/黑名单过滤前,需要加载外部资源(如配置参数、白名单)初始化它们的实例。若它们都能被序列化,从Driver端初始化+broadcast的方式可以完成构建。而Redis、字典树等存在不能序列化的对象,也就无法从Driver端发送到Excutor端。因此,整体的思路是:在Driver端初始化可以被序列化的资源,在Excutor端利用资源构建不可序列化对象,从而分布完成整个对象的构建。
mikeLiu
2020/08/28
5.5K0
as3加载外部资源
在as3的开发中,经常会加载外部共用资源,比如某一个公用的图片或者其它小特效。这时候为了避免重复请求,一般会将这些资源放在一个fla文件中,为每一个资源添加链接。这里以一张图片为例(flower.fla):
meteoric
2018/11/16
8940
如何引用外部cdn资源
说明:其实第一步的引入并不是唯一的办法,还可以通过js创建script的方式,我认为上面的方法是最简洁的.
神葳
2021/01/22
2.2K0
Spark GenericUDF动态加载外部资源
文章1中提到的动态加载外部资源,其实需要重启Spark任务才会生效。受到文章2启动,可以在数据中加入常量列,表示外部资源的地址,并作为UDF的参数(UDF不能输入非数据列,因此用此方法迂回解决问题),再结合文章1的方法,实现同一UDF,动态加载不同资源。本文通过继承GenericUDF类,读取存放在Redis集群中的字符串,构建字典树,完成词包匹配,来说明这一工作。
mikeLiu
2020/09/01
2.7K0
Qt&Qml打开外部资源
Qt接口 QDesktopServices::openUrl(url) /* QDesktopServices::openUrl(QUrl("http://www.example.com")); */ /* QDesktopServices::openUrl(QUrl::fromLocalFile("file:///C:/Users/Hello/Pictures/Qt.jpg")) */ Qml接口 Qt.openUrlExternally(url) /* Qt.openUrlExternally("ht
Qt君
2020/02/24
1.2K0
web3服务端身份验证
DApp 最大的吸引力就是用户拥有自己的数据。然而要做到这一点,需要验证用户的 web3 身份(用户的钱包)。这在客户端是很容易的(因为用户可以用 Metamask 提交自己的信息),但是在服务端就没那么容易了。
Tiny熊
2022/04/11
2.4K0
在 istio 中限制 namespace 访问外部资源
场景:在 istio 集群中,需要使用 namespace 来隔离资源,为特定 namespace 开放集群外访问白名单。
谢正伟
2020/08/05
2.4K0
基于 Web 端的人脸识别身份验证
本文首发于政采云前端团队博客:基于 Web 端的人脸识别身份验证 https://www.zoo.team/article/web-face-recognition
政采云前端团队
2020/06/17
4.5K0
登录工程:传统 Web 应用中的身份验证技术|洞见
标题中的 “传统Web应用” 这一说法并没有什么官方定义,只是为了与“现代化Web应用”做比较而自拟的一个概念。 所谓“现代化Web应用”指的是那些基于分布式架构思想设计的,面向多个端提供稳定可靠的高可用服务,并且在需要时能够横向扩展的Web应用。相对而言,传统Web应用则主要是直接面向PC用户的Web应用程序,采用单体架构较多,也可能在内部采用SOA的分布式运算技术。 一直以来,传统Web应用为构成互联网发挥了重要作用。因此传统Web应用中的身份验证技术经过几代的发展,已经解决了不少实际问题,并最终
ThoughtWorks
2018/04/17
1.9K0
登录工程:传统 Web 应用中的身份验证技术|洞见
各浏览器对页面外部资源加载的策略
各浏览器对页面外部资源加载的策略        这个总结来源于一次优化的请求,最初某个页面的加载十分缓慢,load事件迟迟无法触发,因此希望可以通过对静态文件分域名等方式对页面的外部资源进行优化,拿得load事件尽可能早地触发。 于是我查看了页面的源码,并对外部资源进行了整理,基于下面2个理念画出了一个推测的瀑布图: 浏览器对同一个域只能并发2个HTTP请求 – 网上盛传已久。 javascript文件的加载会阻塞浏览器其他资源的加载 – 同样网上盛传已久。 然而,当我看到各浏览器中实际的瀑布图时,我知道
小端
2018/04/16
1.1K0
登录工程:现代Web应用中的身份验证技术|洞见
“登录工程”的前两篇文章分别介绍了《传统Web应用中的身份验证技术》,以及《现代Web应用中的典型身份验证需求》,接下来是时候介绍适应于现代Web应用中的身份验证实践了。 登录系统 首先,我们要为“登录”做一个简要的定义,令后续的讲述更准确。之前的两篇文章有意无意地混淆了“登录”与“身份验证”的说法,因为在本篇之前,不少“传统Web应用”都将对身份的识别看作整个登录的过程,很少出现像企业应用环境中那样复杂的情景和需求。但从之前的文章中我们看到,现代Web应用对身份验证相关的需求已经向复杂化发展了。我们有
ThoughtWorks
2018/04/17
1.8K0
登录工程:现代Web应用中的身份验证技术|洞见
Django REST Framework-基于JSON Web Token的身份验证
在Django REST Framework中,基于JSON Web Token (JWT) 的身份验证是一种常见的身份验证方法。JWT是一种基于标准JSON格式的开放标准,它可以用于安全地将信息作为JSON对象传输。
玖叁叁
2023/04/25
2.2K0
Java配置方式读取外部的资源配置文件
通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值,具体用法:
全栈程序员站长
2022/07/20
1.3K0
登录工程:现代Web应用的典型身份验证需求|洞见
朋友就职于某大型互联网公司。前不久,在闲聊间我问他日常工作的内容,他说他所在部门只负责一件事,即用户与登录。 而他的具体工作则是为各个业务子网站提供友好的登录部件(Widget),从而统一整个网站群的
ThoughtWorks
2018/04/17
9440
登录工程:现代Web应用的典型身份验证需求|洞见
iframe 加载外部资源,显示隐藏loading,onload失效
在项目中使用iframe 来加载外部资源,需要在iframe请求外部资源的时候,需要显示一个loading,在加载完成后,将这个loading隐藏掉,刚开始看到W3C中 iframe有一个 onload事件----该事件在iframe加载资源完成后就会触发,但是这个事件我试了试,发现触发不了,最在https://stackoverflow.com/questions/20572734/load-event-not-firing-when-iframe-is-loaded-in-chrome找到了有效的方法
lin_zone
2018/08/15
2.1K0
#常备资源# Web安全色
不同的平台(Mac、PC等)有不同的调色板,不同的浏览器也有自己的调色板。这就意味着对于一幅图,显示在Mac上的Web浏览器中的图像,与它在PC上相同浏览器中显示的效果可能差别很大。
tonglei0429
2019/07/22
5910
面向资源与面向活动的 Web 服务
每当一些 Web 应用服务提供方提出允许开发者集成他们的服务的 Web 服务 API 时,大家都非常关心由 API 实现的互操作设计模式。如果 API 使用的是 REST 样式的互操作,REST 方法的拥护者就会将该 API 作为说明为什么 REST 样式服务比 SOAP 样式服务更优越的重要例子而加以称赞;同样地,如果 API 使用 SOAP 样式 Web 服务模式,情况也类似。似乎很少有人关心这样的一个事实,模式的选择主要取决于正在被执行的应用程序的类型,并且像所有优秀的体系结构决策一样,开发者应该将他
张善友
2018/01/22
1.5K0
基于web的项目资源分配系统
摘要:本系统旨在设计一款基于MVC的web系统,以产品经理和项目经理为目标用户,针对EXCEL表格统计软件的不足,提出一套轻量级、易操作的解决方案,搭建了一个存储在云端的项目资源管理网站。系统围绕企业中人与项目这两个资源该如何搭配这个主题,提供了项目资源的编辑与统计服务等定制的项目管理功能,能够让管理人员在网页上管理员工与项目之间的工时安排,编辑、统计每个项目对每个部门的资源需求以及每个部门给每个项目提供的人力资源数等具体功能。本系统以material design为UI主题,以SPA应用程序为设计模式,以函数式编程为代码风格,实现一个高可用,易扩展的网站。
Jean
2019/05/26
4.5K0
基于web的项目资源分配系统
Web漏洞|XXE漏洞详解(XML外部实体注入)
在学习XXE漏洞之前,我们先了解下XML。传送门——> XML和JSON数据格式
谢公子
2022/01/20
2.3K0
Web漏洞|XXE漏洞详解(XML外部实体注入)

相似问题

无子目录的外部web资源

22

使用外部web服务的Django身份验证

11

外部身份验证ASP.NET Web

12

在web外部应用REST架构:资源标识

24

Angular templateUrl,支持Web API等外部资源

118
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档