我有一个名称df
为 colmnscategories
和weight
. 我的目标是从 中的行数据中制作一个类似于此处df
列出的图表(但更大!) ,其中每种颜色仅属于一行,并且半径与weight
值成正比。
我已经好几次需要这个grpah了(我以前用LaTeX手动完成过),我想一劳永逸地解决这个问题(这意味着,做一个python脚本来绘制这个)
为什么是情节?因为它具有交互式图表,可以让用户操作数据。
如果你运行这个例子
import plotly.express as px
df = px.data.wind()
fig = px.bar_polar(df, r="frequency", theta="direction",
color="strength", template="plotly_dark",
color_discrete_sequence= px.colors.sequential.Plasma_r)
fig.show()
您可以单击图例值 ( strength
),触摸的标签将从图表中消失,此功能非常适合我要显示的数据。
实际上,这是我的代码和测试数据:
import pandas as pd
import plotly.graph_objs as go
from random import uniform as unif
df = pd.DataFrame({"categories":"First Height Points Nominal_Value Price Number1 Number2".split(" "),
"weight":[unif(0,1) for i in range(7)]})
def rose_chart(df):
trace = go.Area(
r = df.weight.values,
t = df.caegories.values,
name= 'Peso de las variables de entrada',
marker=dict(color='royalblue'),
opacity=0.5)
data = [trace]
layout = go.Layout(
title = 'Contribución de cada variable para el clasificador',
font=dict(
size=16
),
polar = dict(
radialaxis = dict(
visible = True,
range = [min(df.weight),max(df.weight)], ticksuffix='%', tickangle=0, tickfont=dict(size=13)
),
angularaxis=dict(
nticks=12
)
))
fig = go.Figure(data=data, layout=layout)
fig.show()
rose_chart(df)
输出是
此输出不像第一个示例那样具有交互式行为,也没有正确的大小比例,也没有每列的颜色。 如何改进这段代码?