Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用plotly在条形图中添加注释?_Python_Plotly_Bar Chart_Pie Chart - Fatal编程技术网

Python 如何使用plotly在条形图中添加注释?

Python 如何使用plotly在条形图中添加注释?,python,plotly,bar-chart,pie-chart,Python,Plotly,Bar Chart,Pie Chart,当前我的绘图如下所示: 绘图、数据和代码: df_pub = pd.read_excel('D:\Masterarbeit\Data\Excel/publication_years.xlsx') fig = px.bar(df_pub, x = 'Publication date', y = 'Freq.') fig.show() years = ['80', '81', '82', '83', '84', '85', '86, '87', '88', '89', '90', '91',

当前我的绘图如下所示:

绘图、数据和代码:

df_pub = pd.read_excel('D:\Masterarbeit\Data\Excel/publication_years.xlsx')
fig = px.bar(df_pub, x = 'Publication date', y = 'Freq.')
fig.show()



years = ['80', '81', '82', '83', '84', '85', '86, '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99' ,'00' ,'01', '02', '03', '04' '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19']
freq = [173,1368,2238,4135,5455,6280,7470,6580,7537,8781,10894,14788,20562,27637,32446,32665,30374,28234,24235,22312,16817,20222,24080,30398,30230,27462,33582,28908,31648,26579,29121,31216,34574,34271,32570,32531,43390,46761,55920,34675]
我想在图表下面添加一些注释

正如答复所建议的那样:

import pandas as pd
import plotly.express as px

df_pub = pd.read_excel('D:/Masterarbeit/Data/Excel/publication_years.xlsx')
fig = px.bar(df_pub, x = 'Publication date', y = 'Freq.', title = 'Frequency of publicated patents 1980-2019'
            )
annot_y = -0.2
annot_t = 'Figure 1(i) - Patent frequency 1980-2019Q1'

fig.add_annotation(
                                        y=annot_y,
                                        showarrow=False,
                                        text=annot_t,
                                        textangle=0,
                                        xanchor='left',
                                        xref="x",
                                        yref="paper")
fig.show()

但它仍然被压制住了:/

还没有100%清楚您要注释哪个图形。但现在我假设:


您尚未共享数据样本,因此很难确定。但在我看来,你的x值是时间戳,你在图中使用了
x=4
。因此,你需要确保你分配给x轴的值与你在图中分配的值相对应。添加注释()。下面是一个工作示例,它应该让您完全按照自己的意愿去做

绘图:

代码:
将numpy导入为np
作为pd进口熊猫
导入plotly.graph_对象作为go
将plotly.express导入为px
导入日期时间
从plotly.subplot导入make_子地块
pd.set\u选项('display.max\u rows',无)
#数据样本
n周期=50
np.随机种子(123)
df=pd.DataFrame(np.random.randint(-6,12,size=(npperiods,2)),
列=[“价格”、“差异”])
datelist=pd.date\u范围(datetime.datetime(2017,1,1).strftime(“%Y-%m-%d”),periods=npperiods)。tolist()
df['date']=日期列表
df=df.set_索引(['date'])
df.index=pd.to_datetime(df.index)
#df.iloc[0]=1000
#df=df.cumsum().reset_index()
df.reset_索引(原地=真)
df['price']=df['price'].cumsum()
df['disference']=df['disference'].cumsum()

#filtered=df[(df['date']>'2017-1-24')&(df['date']感谢您的详细回答,但我仍在努力。如果我使用您建议的代码,条形图的范围仍然在零到2019之间。我将编辑该问题。@Epimetheus感谢您的快速反馈!这在
[plotly]下变得非常罕见
tag最近。如果您致力于找到解决方案,请提供所述的数据示例。如果您花三分钟阅读它,这非常容易。如果我的建议至少对您有用,我也不介意投票。@Epimetheus如果您在执行上述链接中的步骤时遇到问题,请不要这样做“别犹豫让我知道!我再次编辑了这个问题。我希望问题现在更清楚。我的问题是,为什么x轴仍然倾斜?@Epimetheus几小时后我会看一看。”
import numpy as np
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px
import datetime
from plotly.subplots import make_subplots

pd.set_option('display.max_rows', None)

# data sample
nperiods = 50
np.random.seed(123)
df = pd.DataFrame(np.random.randint(-6, 12, size=(nperiods, 2)),
                  columns=['price', 'divergence'])
datelist = pd.date_range(datetime.datetime(2017, 1, 1).strftime('%Y-%m-%d'),periods=nperiods).tolist()
df['date'] = datelist 
df = df.set_index(['date'])
df.index = pd.to_datetime(df.index)
# df.iloc[0] =1000
# df = df.cumsum().reset_index()
df.reset_index(inplace=True)
df['price'] = df['price'].cumsum()
df['divergence'] = df['divergence'].cumsum()

# filtered = df[(df['date'] > '2017-1-24') & (df['date'] <= '2018-1-24')]

fig = make_subplots(specs=[[{"secondary_y": True}]])

fig.add_trace(
    go.Bar(
        x=df['date'], 
        y=df['divergence'],
        #opacity=0.5
    )
)

fig.update_traces(marker_color = 'rgba(0,0,250, 0.5)',
                  marker_line_width = 0,
                  selector=dict(type="bar"))

fig.update_layout(bargap=0,
                  bargroupgap = 0,
                 )

annot_x = df['date'].to_list()[::20]
annot_y = -0.2
annot_t = list('ABC')


for i, x in enumerate(annot_x):
#     print(x)
    fig.add_annotation(dict(font=dict(color='red',size=12),
                                        x=x,
                                        y=annot_y,
                                        showarrow=False,
                                        text=annot_t[i],
                                        textangle=0,
                                        xanchor='left',
                                        xref="x",
                                        yref="paper"))

fig.show()