v_a*_*v_a 3 python matplotlib plotly
我正在创建一个频率图,其中也绘制了 NA 值。我试图在 x 轴刻度中以不同的方式为 N/A 值着色。我知道如何在 matplotlib 中做到这一点,但似乎无法弄清楚如何使用 plotly 来做到这一点。
我尝试使用值列表更新 tickcolors 和 tickfonts,但它只需要这两个属性的单个值。请看下面的代码
# Doesn't work - plotly expects a single value for tickcolor
fig.update_xaxes(
tickangle = -60,
tickcolor = ['black', 'black', 'black', 'black', 'red']
)
# In matplotlib the following code works fine
# It checks the text for xticklabels and changes color if it equals 'N/A'
_ = [xl.set_color('red') for xl in plt.gca().get_xticklabels() if xl.get_text() == 'N/A / Missing']
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样 - 这是我的 matplotlib 代码预期输出的输出
正如我在对 OP 的评论中提到的:
我相当有信心不直接给出这种能力。我能想到的唯一方法是超级复杂:在你的情节上放两个轴。除了红色勾号的勾号标签应设置为空字符串外,可以完全正常。其他轴只有一个红色刻度标签,所有其他标签都设置为空字符串。然后将它们放置在彼此之上。
这绝对很糟糕,但它确实有效:
import plotly.graph_objs as go
data = [go.Scatter(
x=[1, 2, 3, 4],
y=[4, 5, 6, 7],
name="data"
), go.Scatter(xaxis='x2')]
layout = go.Layout(
xaxis=dict(
range=[0, 5],
title="xaxis title",
tickfont=dict(color="#1f77b4"),
tickmode='array',
tickvals=[1, 2, 3],
ticktext=['a', 'b', 'c'],
),
xaxis2=dict(
range=[0, 5],
tickfont=dict(color="#ff7f0e"),
tickmode='array',
tickvals=[4],
ticktext=['d'],
overlaying="x",
side="bottom",
)
)
fig = go.Figure(data=data, layout=layout)
fig.show()
Run Code Online (Sandbox Code Playgroud)
一些注意事项:
side='bottom'似乎没有必要,至少在这个情节,但它可能对他人和它的明确反正所以...我一直是在这里。一方面,这种方法的好处在于它与您使用的绘图类型无关。另一方面,不通过轴标签,而是通过信息的样式来传达信息的差异可能会更好。例如,不同颜色的条或类似物可能更能表明差异。
| 归档时间: |
|
| 查看次数: |
2165 次 |
| 最近记录: |