Python Pandas绘制线性极坐标图:代码无错但不显示图的解决方法
问题原因与修改方案
你的代码没有给px.line_polar()指定极坐标的核心映射参数,Plotly无法自动识别哪列数据对应半径(r)、哪列对应角度(theta),所以无法生成正确的折线图。
修改后的完整代码
import pandas as pd import plotly.express as px data = pd.DataFrame({'value': [0, 20, 30, 20, 0, 10, 15, 10], 'bearing': range(0, 360, 45), 'compass': ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']}) # 指定半径、角度参数,同时设置罗盘式极坐标的方向与起始角度 fig = px.line_polar( data, r='value', # 用value列作为极坐标的半径值 theta='bearing', # 用bearing列作为角度(度数) direction='clockwise', # 角度顺时针递增(符合罗盘习惯) start_angle=90 # 起始角度设为90度,让N(0度)位于顶部 ) fig.show()
关键修改点说明
- 必须显式指定
r和theta参数:r对应极坐标的径向数值(你的value列),theta对应角度值(可以用bearing的度数,也可以直接用compass的方位字符串,比如theta='compass')。 - 添加
direction='clockwise'和start_angle=90:让极坐标的方向和起始位置匹配罗盘的常规显示(北在顶部,角度顺时针增加),如果不需要罗盘风格可以去掉这两个参数。 - 移除无用导入:原代码里的
matplotlib、numpy相关导入没有用到,可以删掉,简化代码。
如果想用罗盘方位字符串作为角度,也可以这样写:
fig = px.line_polar( data, r='value', theta='compass', direction='clockwise', start_angle=90 )
内容的提问来源于stack exchange,提问作者span_path
相关产品推荐
相关产品推荐

