gpt4 book ai didi

plotly:从直方图中获取值/plotly:从轨迹中获取值

转载 作者:行者123 更新时间:2023-12-05 00:44:39 50 4
gpt4 key购买 nike

在 plotly 中,我可以创建一个直方图,例如in this example code from the documentation :

import plotly.express as px
df = px.data.tips()
fig = px.histogram(df, x="total_bill")
fig.show()

结果: enter image description here

我的问题是如何获取直方图的数据值?据我所知,这个问题应该相当于我如何访问跟踪的值? (谷歌也没有提供帮助)

我可以使用 numpy 重做直方图:

import numpy as np
np.histogram(df.total_bill)

但这并不总是产生相同的桶,而且它正在重新执行所有有时昂贵的计算来创建直方图。

enter image description here

最佳答案

我对您的问题的理解是,您希望获得直方图中显示的确切间隔和计数。对于 px.data.tips() 的较小子集,此:

enter image description here

从图表中读取这些值将是:

counts = [2, 4, 3, 1]
bins = [5, 15, 25, 35, 45]

没有直接方法可以做到这一点,但这并不意味着它是不可能的。至少如果你愿意使用很棒的 fig.full_figure_for_development() 和一个 little numpy。

代码亮点(最后的完整片段)

xbins = f.data[0].xbins
plotbins = list(np.arange(start=xbins['start'], stop=xbins['end']+xbins['size'], step=xbins['size']))
counts, bins = np.histogram(list(f.data[0].x), bins=plotbins)

输出:

[2 4 3 1] [ 5 15 25 35 45]

所有细节:

我猜你希望喜欢能够做到这一点:

运行:

fig.data[0].count

得到:

[2, 4, 3, 1]

但你会得到最接近的是:

运行:

fig.data[0].x

得到:

[15.53, 10.07, 12.6 , 32.83, 35.83, 29.03, 27.18, 22.67, 17.82,
18.78]

这些只是来自输入df['total_bill'].tail(10) 的原始值。所以 DerekO 是对的,其余部分由 javascript 处理。但是fig.full_figure_for_development()将:

[...] return a new go.Figure object, prepopulated with the same valuesyou provided, as well as all the default values computed by Plotly.js,to allow you to learn more about what attributes control every detailof your figure and how you can customize them.

于是运行f = fig.full_figure_for_development(warn=False),然后:

f.data[0].xbins

会给你:

histogram.XBins({
'end': 45, 'size': 10, 'start': 5
})

现在你知道的足够多,可以用一点 numpy 在你的图中获得相同的值:

完整代码:

import plotly.express as px
import numpy as np

df = px.data.tips()
df = df.tail(10)
fig = px.histogram(df, x="total_bill")
f = fig.full_figure_for_development(warn=False)

xbins = f.data[0].xbins
plotbins = list(np.arange(start=xbins['start'], stop=xbins['end']+xbins['size'], step=xbins['size']))
counts, bins = np.histogram(list(f.data[0].x), bins=plotbins)
print(counts, bins)

关于plotly:从直方图中获取值/plotly:从轨迹中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66583626/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com