如何解决情节:如何以仅显示直方图轮廓的根样式绘制直方图? 完整代码为什么go.Scatter()而不是go.Histogram()? go.Histogram()的代码
我想用这种风格制作直方图:
但是在Python中使用plotly。即我想合并这些条形并仅绘制轮廓。我正在使用此代码:
import plotly.graph_objects as go
import numpy as np
x = np.random.randn(500)
fig = go.Figure(data=[go.Histogram(x=x)])
fig.show()
我一直在寻找有关如何执行此操作的示例,但找不到任何示例。
解决方法
您最好的选择是使用count,index = np.histogram(df['data'],bins=25)
之类的numpy处理直方图,然后使用go.Scatter()
并使用horizontal,vertical,horizontal
将线型设置为line=dict(width = 1,shape='hvh')
。请看最后一节,为什么go.Histogram()
并不是您的最佳选择。对于go.Scatter()
的布局还有其他一些说明,下面的代码段将产生以下图表:
完整代码
import plotly.graph_objects as go
import pandas as pd
import numpy as np
import plotly.io as pio
import plotly.express as px
pio.templates.default = "plotly_white"
# random numbers to a df
np.random.seed(12)
df = pd.DataFrame({'data': np.random.randn(500)})
# produce histogram data wiht numpy
count,bins=25)
# plotly,go.Scatter with line shape set to 'hvh'
fig = go.Figure()
fig.add_traces(go.Scatter(x=index,y = count,line=dict(width = 1,shape='hvh')))
# y-axis cosmetics
fig.update_yaxes(
showgrid=False,ticks="inside",tickson="boundaries",ticklen=10,showline=True,linewidth=1,linecolor='black',mirror=True,zeroline=False)
# x-axis cosmetics
fig.update_xaxes(
showgrid=False,zeroline=False)
fig.show()
为什么go.Scatter()
而不是go.Histogram()
?
使用fig = go.Figure(data=[go.Histogram(x=x)])
的方法,与您想要的绘图最接近的是:
这非常接近,但是您特别想排除每个“条”的垂直线。而且我还没有找到使用go.Histogram
设置来排除或隐藏它们的方法。
go.Histogram()
的代码
import plotly.graph_objects as go
import pandas as pd
import numpy as np
import plotly.io as pio
import plotly.express as px
pio.templates.default = "plotly_white"
import numpy as np
x = np.random.randn(500)
fig = go.Figure(data=[go.Histogram(x=x)])
fig.update_traces(marker=dict(color='rgba(0,0)',line=dict(width=1,color='blue')))
fig.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。