[英]plotly paint outside of figure
我不知道標題是否描述了我的問題,但這是我最好的猜測。
在 plotly 中創建甘特圖很容易( https://plotly.com/python/gantt/ )。
此外,我想指出某些關鍵事件。 由於這些不是特定於類別的,我不希望它們指代 y 軸上的某個類別。 所以我想用垂直線。 這仍然很容易( add_vline
)。 但是那些行也需要標上事件名稱,事件通常有很長的名稱。 這可以通過注釋垂直線來完成。 由於事件名稱很長,我認為在 y 方向上偏移它們是個好主意。
最終結果應如下所示: 標記垂直線大致適用於前三個事件,但隨后注釋脫離了為圖形分配的畫布(?)。 我試圖用黑色虛線框表示這一點。
因此,不顯示文本“被切斷的文本”和“沒有機會”。 我怎樣才能解決這個問題? 我讀到注釋並不是真正的圖形對象,但因此,圖形的尺寸沒有擴展到注釋的坐標。 但我也沒有在 plotly 中發現“文本圖形對象”。
您應該能夠通過組合shapes
、 annotations
和正確調整margins
來獲得所需的內容。 下面的設置就是這樣做的,並在fig.add_annotation()
使用y = -0.2-(i/10)
和yref = 'paper'
注釋形狀越來越負偏移到零線。 就目前而言,該方法在注釋行的數量方面並不是很動態,但我們可以仔細研究一下,如果這個數字確實代表了您正在尋找的內容的本質:
import plotly.express as px
import pandas as pd
df = pd.DataFrame([
dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28'),
dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15'),
dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30')
])
fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task")
fig.update_yaxes(autorange="reversed")
events = [{'date':'2009-02-01', 'annotation': 'some important information', 'color':'red'},
{'date':'2009-04-01', 'annotation': 'some very important stuff', 'color':'green'}]
for i, e in enumerate(events):
fig.add_shape(type = 'line', x0 = e['date'], x1 = e['date'], y0 = 0, y1 = 1, yref = 'paper',
line = dict(color = e['color']))
fig.add_annotation(x = e['date'], y = -0.2-(i/10), text = e['annotation'],
yref = 'paper', showarrow = False,
font=dict(color=e['color'],size=12))
fig.update_layout(margin=dict(l=25,
r=25,
b=100,
t=25,
pad=4),
paper_bgcolor="LightSteelBlue")
fig.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.