我正在尝试比较两个数据库返回的相同项目的分类分配。我想在分类轴上绘制每个数据库,然后使用
px.scatter
可视化它们之间的交集。
我遇到的问题是
px.scatter
似乎没有允许抖动数据点的选项,因此它们并不全部相互重叠。我找到了一个选项 scattermode=group
与 scattergroup=[0,1]
,但它对我来说没有任何作用。
我能够从 JMP 中获得我想要的东西。我怎样才能在plotlyexpress中复制这个?
MWE
import pandas as pd
import plotly.express as px
d = {'Document_Type_x': ['Research Article', 'Research Article', 'Letter to the Editor', 'Letter to the Editor', 'Letter to the Editor'],
'Document_Type_y': ['Article', 'Article', 'Letter', 'Letter', 'Letter']}
df = pd.DataFrame(data=d)
fig = px.scatter(df, x='Document_Type_x', y='Document_Type_y')
fig.update_layout(scattermode='group', scattergap=.9)
fig.update_xaxes(categoryorder = 'category ascending')
fig.update_yaxes(categoryorder = 'category ascending')
fig.show()
我之前从未使用过这个功能,所以我再次查看了参考资料。在这个示例中,可以使用颜色类别,因此我有意添加该类别。并再次修改由于添加颜色类别而导致的图例、标记颜色和悬停模板。这是一种黑客方法,但我认为它会让你得到你想要的东西。
import pandas as pd
import plotly.express as px
d = {'Document_Type_x': ['Research Article', 'Research Article', 'Letter to the Editor', 'Letter to the Editor', 'Letter to the Editor'],
'Document_Type_y': ['Article', 'Article', 'Letter', 'Letter', 'Letter']}
df = pd.DataFrame(data=d)
df['type'] = ['A','B','A','B','C'] #update
fig = px.scatter(df, x='Document_Type_x', y='Document_Type_y', color='type')
fig.update_traces(showlegend=False, marker=dict(color='blue')) #update
fig.update_traces(hovertemplate='Document_Type_x: %{x}<br>Document_Type_y: %{y}<extra></extra>') # update
fig.update_layout(scattermode='group', scattergap=0.9)
fig.update_xaxes(categoryorder = 'category ascending')
fig.update_yaxes(categoryorder = 'category ascending')
fig.show()