【发布时间】:2021-03-09 18:56:24
【问题描述】:
我想以多情节案例的形式展示我的情节,如下图所示。我的代码是使用 python 和 matlpotlib 编写的。代码和图形也在下面。我还想用 S1、S2、S3 和 S4 替换 beseline、Intervention。提前致谢。
import numpy as np
import pandas as pd
from pandas import DataFrame
import matplotlib.pyplot as plt
from matplotlib import pyplot as plt
import seaborn as sns
df = pd.DataFrame({'Time': ['1','2','3','4','5'],
'S1': [74.92, 75.32, 79.64, 100, 101],
'S2': [18.2,80,82,84, 90],
'S3': [22,60,82,54, 70],
'S4': [31,60,72,74, 90]
})
S1_lower_err = [73.3, 73.3, 75, 90, 108]
S1_upper_err = [76, 80, 83.3, 107, 107]
S1_lower_err = (S1_lower_err - df['S1']).abs()
S1_upper_err = (S1_upper_err - df['S1']).abs()
yerr = [S1_lower_err, S1_upper_err]
plt.errorbar('Time', 'S1', data=df, yerr=yerr, capsize=5, marker='s', color='blue', markersize=4, linewidth=1, linestyle='--')
S2_lower_err = [10, 70, 68, 90, 80]
S2_upper_err = [40,80,90,90, 96]
S2_lower_err = (S2_lower_err - df['S2']).abs()
S2_upper_err = (S2_upper_err - df['S2']).abs()
yerr = [S2_lower_err, S2_upper_err]
plt.errorbar('Time', 'S2', data=df, yerr=yerr, capsize=5, marker='o', color='red', markersize=4, linewidth=1, linestyle='-')
S3_lower_err = [12, 52, 80, 50, 65]
S3_upper_err = [27,66,85,60, 76]
S3_lower_err = (S3_lower_err - df['S2']).abs()
S3_upper_err = (S3_upper_err - df['S2']).abs()
yerr = [S3_lower_err, S3_upper_err]
plt.errorbar('Time', 'S3', data=df, yerr=yerr, capsize=5, marker='o', color='green', markersize=4, linewidth=1, linestyle=':')
S4_lower_err = [25, 50, 70, 70, 85]
S4_upper_err = [33,66,77,80, 95]
S4_lower_err = (S4_lower_err - df['S2']).abs()
S4_upper_err = (S4_upper_err - df['S2']).abs()
yerr = [S4_lower_err, S4_upper_err]
plt.errorbar('Time', 'S4', data=df, yerr=yerr, capsize=5, marker='o', color='black', markersize=4, linewidth=1, linestyle='-.')
plt.legend()
plt.xlabel("Time")
plt.ylabel("Performance")
plt.ylim(-1, 120)
plt.savefig('SixF.png', dpi=300, bbox_inches='tight')
plt.show()
代码生成如下图。
【问题讨论】:
-
我真的很讨厌那个说你应该寻找其他工具的人,但考虑使用 Plotly,它有更好的 API,而且情节互动性强且美观。 plotly.com/python/subplots。如果 matplotlib 是必须的,我认为 Subplots 是您正在寻找的 matplotlib.org/3.3.3/api/_as_gen/…。
标签: python pandas matplotlib plot data-science