ntg*_*ntg 3 histogram plotly plotly-python plotly-express
在情节中,我可以创建一个直方图,例如文档中的示例代码:
import plotly.express as px
df = px.data.tips()
fig = px.histogram(df, x="total_bill")
fig.show()
Run Code Online (Sandbox Code Playgroud)
我的问题是如何获取直方图的数据值?据我所知,这个问题应该等同于如何访问跟踪的值?(谷歌也没有提供帮助)
我可以使用 numpy 重做直方图:
import numpy as np
np.histogram(df.total_bill)
Run Code Online (Sandbox Code Playgroud)
但这并不总是会产生相同的存储桶,而且它会重新执行所有有时昂贵的计算来创建直方图。
我对您问题的理解是您希望获得直方图中显示的准确间隔和计数。对于 的较小子集px.data.tips(),如下:
从图表中读出这些值将是:
counts = [2, 4, 3, 1]
bins = [5, 15, 25, 35, 45]
Run Code Online (Sandbox Code Playgroud)
没有直接的方法可以做到这一点,但这并不意味着这是不可能的。至少如果你愿意使用很棒的fig.full_figure_for_development()和有点麻木的。
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)
Run Code Online (Sandbox Code Playgroud)
[2 4 3 1] [ 5 15 25 35 45]
Run Code Online (Sandbox Code Playgroud)
我猜你希望能够做的是这样的:
跑步:
fig.data[0].count
Run Code Online (Sandbox Code Playgroud)
并得到:
[2, 4, 3, 1]
Run Code Online (Sandbox Code Playgroud)
但你会得到的最接近的是:
跑步:
fig.data[0].x
Run Code Online (Sandbox Code Playgroud)
并得到:
[15.53, 10.07, 12.6 , 32.83, 35.83, 29.03, 27.18, 22.67, 17.82,
18.78]
Run Code Online (Sandbox Code Playgroud)
这些只是输入的原始值df['total_bill'].tail(10)。所以 DerekO 是对的,其余的由 javascript 处理。但fig.full_figure_for_development()会:
[...] 返回一个新的 go.Figure 对象,该对象预填充了您提供的相同值以及 Plotly.js 计算的所有默认值,以便您了解更多关于哪些属性控制图形的每个细节和如何定制它们。
所以运行f = fig.full_figure_for_development(warn=False),然后:
f.data[0].xbins
Run Code Online (Sandbox Code Playgroud)
会给你:
histogram.XBins({
'end': 45, 'size': 10, 'start': 5
})
Run Code Online (Sandbox Code Playgroud)
现在你已经知道了足够的知识,可以用一点 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)
Run Code Online (Sandbox Code Playgroud)
在同一个 Plotly Histogram 文档中,有一个名为Accessing the counts yaxis value 的部分,它解释了 y 值是在图形渲染时由浏览器中的 JavaScript 计算的,因此您无法在图形对象中访问它(例如、通过fig.layout或fig.data,您可以尝试其他类型的图表)
他们建议您自己使用 计算计数和分箱np.histogram,然后将这些值传递给px.bar以确保您的直方图与您想要的存储桶匹配。
| 归档时间: |
|
| 查看次数: |
4819 次 |
| 最近记录: |