gpt4 book ai didi

python - Plotly - 在雷达图上绘制背景形状

转载 作者:行者123 更新时间:2023-12-04 09:31:35 28 4
gpt4 key购买 nike

具有以下功能:

def plot_radar_analysis(df_team_matches, team=None, gameweek=None, kip=None):

from math import pi
import plotly.express as px
from colors import full_team_colors

gameweeks=range(1,gameweek+1)

df_temp = df_team_matches.loc[(df_team_matches['ForTeam']==team[0])
&(df_team_matches['GameWeek'].isin(gameweeks))]

indicator = df_temp[kip[0]]

R = list(indicator.values)
theta = [('Rodada ' + str(i)) for i in list(df_temp['GameWeek'].values)]

color = full_team_colors[team[0]]

df = pd.DataFrame(dict(
r=R,
theta=theta))

fig = px.line_polar(df, r='r', theta='theta', line_close=True, title=f'{team[0]} - {kip[0]}')
fig.update_polars(angularaxis_type="category")
fig.update_traces(fill='toself', line_color=color)
fig.update_traces(mode="markers+lines")

return fig
我绘制这个:
enter image description here

不,我想为我的雷达图添加样式,并为我的主要人物添加一些低不透明度的形状,以使背景看起来像这样:
enter image description here
请注意,与足球相关的形状应保留在背景中,红色区域将位于这些形状之上。

谁能指出我如何绘制这些形状并获得类似于上图的结果的正确方向?

最佳答案

也许有更好的方法来做到这一点,但这是我发现的。
使极坐标网格透明

  • 通过添加 bgcolor="rgba(0, 0, 0, 0)" 使网格的背景颜色透明论据你的fig.update_polars称呼。 (最后一个零很重要,其他值无关紧要)

  •     fig.update_polars(angularaxis_type="category",
    bgcolor="rgba(223, 223, 223, 0)")
    将图像添加到背景
  • 使用pillow从硬盘上的文件创建图像对象
  • 使用
  • 添加图片

    from PIL import Image

    fig.add_layout_image(
    dict(source=Image.open('bg_football.jpg'),
    xref="paper",
    yref="paper",
    x=0.5,
    y=0.5,
    sizex=1,
    sizey=1,
    sizing="contain",
    xanchor="center",
    yanchor="middle",
    opacity=0.5,
    layer="below"))
    https://plotly.com/python/images/
  • xref='paper'yref='paper'使图像相对于纸张定位。如果 xref='x'yref='y' ,然后图像以笛卡尔坐标轴定位。我没有找到相对于极坐标定位图像的可能性。
  • x=0.5, y=0.5, xanchor='center', yanchor='middle'使图像居中。
  • sizing="contain"保持图像大小不变。其他可能的值是“包含”和“拉伸(stretch)”。
  • source可以是 URL 字符串或 PIL.Image实例。

  • 结果图
    results
    笔记
  • 如果您需要调整 CSS 以使图像在每种情况和屏幕尺寸等下都与绘图大小相同:图像将放置在 <g class=layer-below> 内的 DOM 中,与 <g> 不同- 与您的极坐标图 (<g class=polarlayer>) 的元素,它们有一个共同的父级 <svg class=main-svg> ,它有父 <div class=svg-container> .

  • 其他资源
  • Plotly image reference
  • plotly.graph_objects.Figure.add_layout_image
  • 关于python - Plotly - 在雷达图上绘制背景形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62820994/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com