首页 > 解决方案 > 如何根据数据自动更改图表标题

问题描述

我有创建 seaborn regplots 的代码。我的目标是每次在该日期的特定日期和时间运行此代码。问题是每次运行此图时,我都需要更改标题中的日期和小时。我想自动执行此操作,我想使用格式但对如何在字符串中执行此操作感到困惑。

这是我创建图表的方式:

#Filter/Create the database based on the dat and the hour
# the date and hour for the title should come from here

byDH=df_NDVIall[(df_NDVIall.index.get_level_values('date')=='6/23/2019')&(df_NDVIall.index.get_level_values('hour') == '12:00')]['NDVI']
NITbyDH=df_Nit[['plant','nitrogen']]


merged_data=pd.merge(byDH.to_frame(),NITbyDH,how='inner',on='plant')
merged_data.head(18)

import seaborn as sns

#Define X and Y
x = merged_data['NDVI']
y = merged_data['nitrogen']

#The function
def give_me_scatter(x, y, title, xlabel, ylabel):
    slope, intercept, r_value, p_value, std_err = linregress(x, y)
    #print('slope:',slope)
    #print('intercept:',intercept)
    #print('R:',r_value)
    #print('R^2:',(r_value**2))  

    # use line_kws to set line label for legend
    plt.figure(figsize=(7.5,6.5))
    ax = sns.regplot(x='NDVI', y='nitrogen', data=merged_data, color='b', line_kws={'label':"y={0:.1f}x+{1:.1f}".format(slope,intercept)})
    ax = sns.regplot(x='NDVI', y='nitrogen', data=merged_data, color='b', line_kws={'label':"R^2={0:.3}".format(r_value**2)})
    ax.set_title('NDVI vs Nitrogen% ')

    # plot legend
    ax.legend()
    plt.show()

    # plot legend

    ax.legend()
    plt.show()

#get scatter plot

give_me_scatter(x, y, 'NDVI vs Nitrogen ', 'NDVI', 'Nitrogen %')

*我无法共享我的数据库

*我的最终目标是自动将日期和小时添加到标题中,而无需手动更改标题

标签: pythonregressionseaborn

解决方案


您可以使用名为 datetime 的包。然后您可以执行以下操作来获取当前日期:

from datetime import date
today = date.today()

当然,您可以按照您想要的方式对其进行格式化。这里有更多示例信息:https ://www.programiz.com/python-programming/datetime/current-datetime

因此,您只需要创建一个变量并为其分配格式化的日期/时间。


推荐阅读