作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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 分析模型的性能。
现在我必须突出一个效果最好的模型,一个简单的方法就是改变模型 xtick 的颜色(改变圆圈 xtick 的颜色如下)
有没有简单的方法可以做到这一点?
最佳答案
有比评论中建议的添加更多轴更简单的方法。 Plotly 识别 html 格式,因此您可以轻松地只格式化 go.Scatter()
中 x 参数中的一个值。喜欢'<em>'+x+'</em>'
得到这个:
诚然,C
没有那么突出,所以我喜欢做的不是添加单独的轴,而是添加单独的 traces 以使图中的某些点突出。在这里,我还结合了 som html 格式的额外跟踪:
我最喜欢这种方法的一点是,当您可以通过单击图例中的名称来选择显示或隐藏突出显示的点时,它会通过增加交互性来增加一些额外的值(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/
有没有一种方法可以“标记”对象的属性,使它们在反射中“突出”? 例如: class A { int aa, b; string s1, s2; public int AA
我是一名优秀的程序员,十分优秀!