Plotly:如何将文本标签添加到直方图?
Plotly: How to add text labels to a histogram?
有没有办法在Plotly.Express直方图中显示直方图聚合的统计值?
px.histogram(pd.DataFrame({"A":[1,1,1,2,2,3,3,3,4,4,4,5]}),x="A")
如果我要使用常规直方图,我可以指定 text
参数,该参数指向包含要显示的值的列。
px.bar(pd.DataFrame({"val":[1,2,3,4,5], "height": [3,2,3,3,1]}), x="val", y="height", text="height")
但是对于直方图,这个值是计算出来的,它甚至不是 fig.to_dict()
的一部分。有没有办法将文本标签添加到直方图中?
使用下面的答案,我将发现总结到一篇文章中 - https://towardsdatascience.com/histograms-with-plotly-express-complete-guide-d483656c5ad7
据我所知,直方图没有文本属性。事实证明,即使有可能检索应用的 x 和 y 值并将它们放入适当的注释中也是很复杂的。您最好的选择似乎是使用 numpy.histogram 进行分箱并使用 go.Bar
设置图形。下面的代码片段将生成以下图:
完整代码:
import numpy as np
import plotly.express as px
import plotly.graph_objects as go
# sample data
df = px.data.tips()
# create bins
bins = [0, 10, 20, 30, 40, 50]
counts, bins = np.histogram(df.total_bill, bins=bins)
#bins2 = 0.5 * (bins1[:-1] + bins2[1:])
fig = go.Figure(go.Bar(x=bins, y=counts))
fig.data[0].text = counts
fig.update_traces(textposition='inside', textfont_size=8)
fig.update_layout(bargap=0)
fig.update_traces(marker_color='blue', marker_line_color='blue',
marker_line_width=1, opacity=0.4)
fig.show()
今天早上我在尝试绘制 TDD 百分比直方图时遇到了同样的问题。使用 plotly,我想规范化 (histnorm: 'percent') 这样我就可以看到我每月 TDD 值的百分比而不是计数。我通过简单地执行 print(tdd_hist)
找到了这个解决方案
首先,我将直方图打印到控制台并看到了这个输出...
Figure({
'data': [{'alignmentgroup': 'True',
'bingroup': 'x',
'histnorm': 'percent',
'hovertemplate': 'Total Demand Distortion TDD %=%{x}<br>count=%{y}<extra></extra>',
'legendgroup': '',
'marker': {'color': '#636efa'},
'name': '',
'offsetgroup': '',
'orientation': 'v',
'showlegend': False,
'type': 'histogram',
'x': array([0.67, 0.68, 0.68, ..., 2.41, 2.48, 2.01]),
'xaxis': 'x',
'yaxis': 'y'}],
'layout': {'barmode': 'relative',
'legend': {'tracegroupgap': 0},
'template': '...',
'title': {'text': 'Percent Histogram of TDD%'},
'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'Total Demand Distortion TDD %'}},
'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'count'}, 'type': 'log'}}
现在我可以清楚地看到要改变它,我做了一个
tdd_hist.layout.yaxis.title.text = 'Percent'
而且有效!
将 text_auto
参数设置为 True
即可。
根据您的示例代码,这就是我得到的:
fig = px.histogram(pd.DataFrame({"A":[1,1,1,2,2,3,3,3,4,4,4,5]}),x="A",
text_auto=True)
fig.show()
作为新会员我还不能嵌入屏幕截图,但这里是 link。
Histogram
有点晚了,但希望这会有所帮助。
有没有办法在Plotly.Express直方图中显示直方图聚合的统计值?
px.histogram(pd.DataFrame({"A":[1,1,1,2,2,3,3,3,4,4,4,5]}),x="A")
text
参数,该参数指向包含要显示的值的列。
px.bar(pd.DataFrame({"val":[1,2,3,4,5], "height": [3,2,3,3,1]}), x="val", y="height", text="height")
但是对于直方图,这个值是计算出来的,它甚至不是 fig.to_dict()
的一部分。有没有办法将文本标签添加到直方图中?
使用下面的答案,我将发现总结到一篇文章中 - https://towardsdatascience.com/histograms-with-plotly-express-complete-guide-d483656c5ad7
据我所知,直方图没有文本属性。事实证明,即使有可能检索应用的 x 和 y 值并将它们放入适当的注释中也是很复杂的。您最好的选择似乎是使用 numpy.histogram 进行分箱并使用 go.Bar
设置图形。下面的代码片段将生成以下图:
完整代码:
import numpy as np
import plotly.express as px
import plotly.graph_objects as go
# sample data
df = px.data.tips()
# create bins
bins = [0, 10, 20, 30, 40, 50]
counts, bins = np.histogram(df.total_bill, bins=bins)
#bins2 = 0.5 * (bins1[:-1] + bins2[1:])
fig = go.Figure(go.Bar(x=bins, y=counts))
fig.data[0].text = counts
fig.update_traces(textposition='inside', textfont_size=8)
fig.update_layout(bargap=0)
fig.update_traces(marker_color='blue', marker_line_color='blue',
marker_line_width=1, opacity=0.4)
fig.show()
今天早上我在尝试绘制 TDD 百分比直方图时遇到了同样的问题。使用 plotly,我想规范化 (histnorm: 'percent') 这样我就可以看到我每月 TDD 值的百分比而不是计数。我通过简单地执行 print(tdd_hist)
找到了这个解决方案首先,我将直方图打印到控制台并看到了这个输出...
Figure({
'data': [{'alignmentgroup': 'True',
'bingroup': 'x',
'histnorm': 'percent',
'hovertemplate': 'Total Demand Distortion TDD %=%{x}<br>count=%{y}<extra></extra>',
'legendgroup': '',
'marker': {'color': '#636efa'},
'name': '',
'offsetgroup': '',
'orientation': 'v',
'showlegend': False,
'type': 'histogram',
'x': array([0.67, 0.68, 0.68, ..., 2.41, 2.48, 2.01]),
'xaxis': 'x',
'yaxis': 'y'}],
'layout': {'barmode': 'relative',
'legend': {'tracegroupgap': 0},
'template': '...',
'title': {'text': 'Percent Histogram of TDD%'},
'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'Total Demand Distortion TDD %'}},
'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'count'}, 'type': 'log'}}
现在我可以清楚地看到要改变它,我做了一个
tdd_hist.layout.yaxis.title.text = 'Percent'
而且有效!
将 text_auto
参数设置为 True
即可。
根据您的示例代码,这就是我得到的:
fig = px.histogram(pd.DataFrame({"A":[1,1,1,2,2,3,3,3,4,4,4,5]}),x="A",
text_auto=True)
fig.show()
作为新会员我还不能嵌入屏幕截图,但这里是 link。
Histogram
有点晚了,但希望这会有所帮助。