gpt4 book ai didi

python - Plotly:如何突出显示某些 xticks?

转载 作者:行者123 更新时间:2023-12-04 08:32:08 30 4
gpt4 key购买 nike

class parser(object):
"""docstring for parser"""
def __init__(self, path):
self.encodeCSV = pd.read_csv(path, ',')
self.metrics = {
"train_rmse" : "RMSE_Tr",
"validation_rmse" : "RMSE_V",
"train_90_quantile" : "90QT_Tr",
"validation_90_quantile" : "90QT_V"
}

def generate_img(self):
fig = go.Figure({
'layout' : {'title': {'text': 'Combination Model'},
'xaxis': {'title': {'text': 'Models'}},
'yaxis': {'title': {'text': 'KPI Values'}}}

})

for metric in self.metrics:
fig.add_trace(go.Scatter(x=self.encodeCSV['names'],
y=self.encodeCSV[metric],
mode='lines+markers',
name=self.metrics[metric]))
return fig

我已经生成了一个图形来通过 plotly 分析模型的性能。

这是一个例子 enter image description here

现在我必须突出一个效果最好的模型,一个简单的方法就是改变模型 xtick 的颜色(改变圆圈 xtick 的颜色如下) enter image description here

有没有简单的方法可以做到这一点?

最佳答案

有比评论中建议的添加更多轴更简单的方法。 Plotly 识别 html 格式,因此您可以轻松地只格式化 go.Scatter() 中 x 参数中的一个值。喜欢'<em>'+x+'</em>'得到这个:

plotly 1:

enter image description here

诚然,C 没有那么突出,所以我喜欢做的不是添加单独的轴,而是添加单独的 traces 以使图中的某些点突出。在这里,我还结合了 som html 格式的额外跟踪:

plotly 2:

enter image description here

我最喜欢这种方法的一点是,当您可以通过单击图例中的名称来选择显示或隐藏突出显示的点时,它会通过增加交互性来增加一些额外的值(value)。我希望你会发现这很有用。如果有任何不清楚的地方,请随时告诉我。

完整代码:

import plotly.graph_objects as go
import pandas as pd
import numpy as np

# data
df = pd.DataFrame({'x': list('ABCDE'),
'y': [2,4,1,3,5]})

#df['y_min'] = np.where(df['y']==df['y'].min(), df['y'], np.nan)
# series with formatted x values using a list comprehension
# (further improvements are welcomed!)
#df['x_txt'] = ['<i>'+x+'</i>' if np.isnan(df['y_min'].iloc[i]) else '<b>'+x+'</b>' for i, x in enumerate(df['x'])]

# Edited -->
# Create list containing x-labels.
ymin = df['y'].argmin()
xlabels = [f"<i>{x}</i>" for x in df['x']]
xlabels[ymin] = xlabels[ymin].replace('i', 'b')

# Create array of y values.
y = np.full(df['y'].size, np.nan)
y[ymin] = df['y'].min()
# <--

# plotly
fig = go.Figure()

# add highlighted point first to appear in the back
fig.add_trace(go.Scatter(x = xlabels, y = y, # Edited
mode = 'markers',
marker = dict(color='red', size = 12),
name = 'best'))

# add the main values to the figure
fig.add_trace(go.Scatter(x = xlabels, y = df['y'], # Edited
mode = 'lines',
marker =dict(color='blue'),
name = 'other values'))

fig.show()

关于python - Plotly:如何突出显示某些 xticks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64966974/

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