手动更改 plotly scatterpolar 标签

2022-01-21 00:00:00 python plotly

问题描述

我有一个散点图,但外部的标签以度数而不是方向(N、NE、E 等)显示方向.我的数据是度数,所以我需要手动替换图中显示的标签.我当前的代码是:

I have a scatterpolar plot, but the labels on the outside show the direction in terms of degrees rather than directions (N, NE, E, etc.). My data is in terms of degrees, so I will need to manually replace the labels shown on the plot. My current code is:

import pandas as pd
import plotly.graph_objs as go

# Get data
url = "https://raw.githubusercontent.com/mpudil/projects/master/slc.csv"
df = pd.read_csv(url)

fig = go.Figure(data=
    go.Scatterpolar(
        r = list(df['distance']),
        theta = list(df['bearing']),
        mode = 'markers',   
        name = 'log'
    ))

fig.update_layout(
    polar = dict(
      radialaxis = dict(type = "log", tickangle = 45),
      angularaxis = dict(
            thetaunit = "degrees",
            dtick = 45,
            rotation=90,
            direction = "clockwise" 
            )
    ))

这会产生下面的情节.有什么建议可以让情节显示方向而不是度数?谢谢.

Which produces the plot below. Any suggestions to make the plot show the direction instead of degree? Thanks.

注意:数据可以在 https://github.com 找到/mpudil/projects/blob/master/slc.csv


解决方案

不确定是否有更好的方法,但以下应该可以工作

Not sure if there is a better way but the following should work

fig.update_layout(
    polar = dict(
      radialaxis = dict(type = "log", tickangle = 45),
      angularaxis = dict(
            thetaunit = "degrees",
            dtick = 45,
            rotation=90,
            direction = "clockwise",
            tickmode="array",
            tickvals=[0, 45, 90, 135, 180, 225, 270, 315],
            ticktext=["N", "NE", "E", "SE", "S", "SW", "W", "NW"]
            )
    ))

相关文章