首页 > 解决方案 > 如何制作带有情节的 bar_polar 图表,没有频率列?

问题描述

代码的第一部分是来自 plotly 网站的代码,它显示了我想用我自己的可用数据做什么。

import plotly.express as px
import pandas as pd

fig= px.bar_polar(df2, r="frequency", theta = "direction",
                 color = "strength", template = "plotly_dark",
                 color_discrete_sequence = px.colors.sequential.Plasma_r)
fig.show()

所需图表: 它应该是什么样子

到目前为止,这是我的代码:

import plotly.express as px
import pandas as pd

df = pd.read_csv (r"Lidar_final_corrected.csv")
print(df)
      wind_dir  Windspeed
0       227.35       2.12
1       233.41       1.65
2       227.75       1.52
3       217.75       1.71
4       204.64       2.21
...        ...        ...
3336    222.33      17.89
3337    221.52      17.21
3338    219.37      15.45
3339    217.23      16.09
3340    218.31      16.18

[3341 rows x 2 columns]

fig= px.bar_polar(df,theta = "wind_dir",
                 color = "wind_dir", template = "plotly_dark",
                 color_discrete_sequence = px.colors.sequential.Plasma_r)
fig.show()

电流输出: 它看起来像什么

现在,如果您仔细观察,您会发现它正在绘制一些东西,但颜色不对。我省略了频率,因为我只有两列可以使用。有没有一种解决方法可以让这个情节在没有频率的情况下工作?

(PS:数据是基于时间序列的数据,所以每 10 分钟或 1 分钟就有一个新条目。我删除了时间戳,因为我认为我不需要它。)

标签: pythonplotlydata-visualization

解决方案


你需要做一个熊猫 groupby

grp = df.groupby(["wind_dir", "wind_speed"]).size().reset_index(name="frequency")

本答案所述

然后,您可以使用与 plotly 文档中相同的 plotly 代码!

fig = px.bar_polar(grp, r="frequency", theta="wind_dir",
    color="wind_speed", template="plotly_dark",
    color_discrete_sequence=px.colors.sequential.Plasma_r
)
fig.show()

快乐的阴谋!(为了获得更好的结果,您应该对风向和风速进行分类。(至少围绕它们)。正确分类的示例: https ://community.plotly.com/t/wind-rose-with-wind-speed-ms- and-direction-deg-data-columns-need-help/33274/5


推荐阅读