简体   繁体   中英

Plotly Express Scatter Resizing Dots

i am creating a bee swarm graph for local windspeed data. I want to make my dot sizes bigger, as the smallest are not visible enough.

Strangely enough, my list comprehension in resize is not working. One size is fe 10000 but stays at the same volume compared to the sizes before resizing.

I didnt see another post adressing this issue. Thy for helping. o/

data_wspd = my_data.loc[:, ["time","wspd"]]
print(data_wspd)
wspd_grouped = data_wspd.groupby("wspd")

df = {
    "wspd": [],
    "wspd_count": [],
     "wspd_size" :[]
}

for name, group in wspd_grouped:
    df["wspd"].append(name)
    df["wspd_count"].append(len(group))
df["wspd_size"] = [count*1000 for count in df["wspd_count"]]

fig_wspd = px.scatter(df,
                 x="wspd",
                 y="wspd_count",
                 size="wspd_size",
                 color="wspd",
                 hover_name="wspd",

                 )
#fig_wspd.update_yaxes(visible=False)

fig_wspd.show()
fig_wspd.write_html("wspd_beeswarm.html")

来自真实代码的示例。

This is occurring because plotly.express markers are sized relative to the other markers.

There is an argument called size_max which is set to 20 by default (see the documentation here ). So the observation with the largest wspd_size will have a marker size of 20, and if you multiply that column by 1000, that observation will still have the largest wspd_size value, so it will have a marker of size 20, and all of the smaller markers will remain the same size because the ratios between marker sizes in that column haven't changed.

I think the easiest solution is to pass the argument size_max=20*{scaling_factor} to make all of the markers larger.

Try the following:

size_max_default = 20
scaling_factor = 4
fig_wspd = px.scatter(df,
                 x="wspd",
                 y="wspd_count",
                 size="wspd_size",
                 size_max=size_max_default*scaling_factor,
                 color="wspd",
                 hover_name="wspd",

                 )

I tried this with some sample data and you can see the markers increase in size before and after using the size_max argument:

df = pd.DataFrame({
    "wspd":np.linspace(1,21,11),
    "wspd_count":np.linspace(1,21,11),
    "wspd_size":[1,1,1,1,2,2,5,10,20,50,50]
})

df["wspd_size"] = df["wspd_size"]*100

fig_wspd = px.scatter(df,
                 x="wspd",
                 y="wspd_count",
                 size="wspd_size",
                 color="wspd",
                 hover_name="wspd",

                 )

在此处输入图像描述

size_max_default = 20
scaling_factor = 4
fig_wspd = px.scatter(df,
                 x="wspd",
                 y="wspd_count",
                 size="wspd_size",
                 size_max=size_max_default*scaling_factor,
                 color="wspd",
                 hover_name="wspd",
                 )

在此处输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM