简体   繁体   English

情节:如何检查和更改情节图?

[英]Plotly: How to inspect and make changes to a plotly figure?

Related questions have already been asked and before eg已经问过相关问题并且之前例如

But the answers to these questions have been limited by the fact that not all parameters have been available through Python, meaning that the real answers were buried somewhere in JavaScript.但是这些问题的答案受到了以下事实的限制:并非所有参数都可以通过 Python 获得,这意味着真正的答案隐藏在 JavaScript 的某个地方。 But for newer versions of plotly, how can you inspect and edit a plotly figure?但是对于较新版本的 plotly,您如何检查和编辑 plotly 图形? How could you, for example, find out what the background color of a figure is?例如,您如何找出图形的背景颜色? And then change it?然后再改? From the second link above you can see that fig.show and print(fig) will reveal some details about the figure structure.从上面的第二个链接中,您可以看到fig.showprint(fig)将揭示有关图形结构的一些细节。 But certainly not all of it.但肯定不是全部。 The code snippet below will produce the following plot:下面的代码片段将生成以下图:

Plot:阴谋:

在此处输入图片说明

Code:代码:

import plotly.graph_objects as go
import plotly.express as px
df = px.data.gapminder().query("country=='Canada'")
fig = px.line(df, x="year", y="lifeExp", title='Life expectancy in Canada')
fig.show()

Running fig.show will now partly reveal the structure of the figure in the form of a dict:运行fig.show现在将以字典的形式部分显示图形的结构:

<bound method BaseFigure.show of Figure({
    'data': [{'hovertemplate': 'year=%{x}<br>lifeExp=%{y}<extra></extra>',
              'legendgroup': '',
              'line': {'color': '#636efa', 'dash': 'solid'},
              'mode': 'lines',
              'name': '',
              'orientation': 'v',
              'showlegend': False,
              'type': 'scatter',
              'x': array([1952, 1957, 1962, 1967, 1972, 1977, 1982, 1987, 1992, 1997, 2002, 2007],
                         dtype=int64),
              'xaxis': 'x',
              'y': array([68.75 , 69.96 , 71.3  , 72.13 , 72.88 , 74.21 , 75.76 , 76.86 , 77.95 ,
                          78.61 , 79.77 , 80.653]),
              'yaxis': 'y'}],
    'layout': {'legend': {'tracegroupgap': 0},
               'template': '...',
               'title': {'text': 'Life expectancy in Canada'},
               'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'year'}},
               'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'lifeExp'}}}
})

But as you can see for yourself, there are a lot of details missing.但正如你自己所看到的,有很多细节缺失。 So how can you peform a more complete figure introspection?那么如何进行更完整的人物自省呢?

As of version 4.10, the plotly developers have introduced the awesome fig.full_figure_for_development() function which they talk about here .从 4.10 版本开始,情节开发人员引入了他们在这里谈论的令人敬畏的fig.full_figure_for_development()函数。 There you'll see that:在那里你会看到:

fig.full_figure_for_development() function will return a new go.Figure object, prepopulated with the same values you provided, as well as all the default values computed by Plotly.js, to allow you to learn more about what attributes control every detail of your figure and how you can customize them. fig.full_figure_for_development()函数将返回一个新的go.Figure对象,其中预先填充了您提供的相同值以及 Plotly.js 计算的所有默认值,以让您了解更多关于哪些属性控制您的每个细节图以及如何自定义它们。 This function is named “for development” because it's not necessary to use it to produce figures, but it can be really handy to explore figures while you're figuring out how to build them.这个函数被命名为“用于开发”,因为没有必要使用它来生成图形,但是在您弄清楚如何构建图形时探索图形非常方便。

So building on the example in the question, the following snippet will produce an output of about 180 lines containing, among a plethora of other details, this part about the figure layout:因此,以问题中的示例为基础,以下代码段将产生大约 180 行的输出,其中包含大量其他细节,关于图形布局的这一部分:

'margin': {'autoexpand': True, 'b': 80, 'l': 80, 'pad': 0, 'r': 80, 't': 100},
'modebar': {'activecolor': 'rgba(68, 68, 68, 0.7)',
           'bgcolor': 'rgba(255, 255, 255, 0.5)',
           'color': 'rgba(68, 68, 68, 0.3)',
           'orientation': 'h'},
'newshape': {'drawdirection': 'diagonal',
            'fillcolor': 'rgba(0,0,0,0)',
            'fillrule': 'evenodd',
            'layer': 'above',
            'line': {'color': '#444', 'dash': 'solid', 'width': 4},
            'opacity': 1},
'paper_bgcolor': 'white',
'plot_bgcolor': '#E5ECF6',
'separators': '.,',
'showlegend': False,
'spikedistance': 20,

And there you can also see the background color of the plot as 'plot_bgcolor': '#E5ECF6' .在那里您还可以看到绘图的背景颜色为'plot_bgcolor': '#E5ECF6' And you probably know that you can set the background color using to for example 'grey' using fig.update_layout(plot_bgcolor='grey') .你可能知道,你可以使用到例如设置背景色'grey'使用fig.update_layout(plot_bgcolor='grey') But now you know how to get it as well:但现在你也知道如何获得它了:

# In:
fig.layout.plot_bgcolor

# Out:
'#E5ECF6'

And in knowing how to do this, you know how to get and set almost any attribute of a plotly figure.知道如何执行此操作后,您就知道如何获取和设置情节图的几乎所有属性。 And it doesn't matter if you've built the figure using plotly.graph_objects or plotly.express如果您使用plotly.graph_objectsplotly.express构建图形plotly.graph_objects plotly.express

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM