Python - 将新曲线从 df 添加到现有线图中
Python - Add new curve from a df into existing lineplot
我根据 DafaFrame
.
使用 sns
创建了一个图
现在,我想在先前创建的图上添加来自另一个数据框的新曲线。
这是我的剧情代码:
tline = sns.lineplot(x='reads', y='time', data=df, hue='method', style='method', markers=True, dashes=False, ax=axs[0, 0])
tline.set_xlabel('Numero di reads')
tline.set_ylabel ('Time [s]')
tline.legend(loc='lower right')
tline.set_yscale('log')
tline.autoscale(enable=True, axis='x')
tline.autoscale(enable=True, axis='y')
现在我有另一个 Dataframe
与第一个 DataFrame
相同的列。如何在图例中添加带有自定义条目的新曲线?
这是DataFrame
的结构:
Dataset
Method
Reads
Time
Peak-memory
14M
Set
14000000
7.33
1035204
20K
Set
200000
0.38
107464
200K
Set
20000
0.07
42936
2M
Set
28428648
16.09
2347740
28M
Set
2000000
1.41
240240
我建议像这样使用 matplotlibs OOP interface
import numpy as np
from matplotlib import pyplot as plt
import pandas as pd
import seaborn as sns
# generate sample data
time_column = np.arange(10)
data_column1 = np.random.randint(0, 10, 10)
data_column2 = np.random.randint(0, 10, 10)
# store in pandas dfs
df1 = pd.DataFrame(zip(time_column, data_column1), columns=['Time', 'Data'])
df2 = pd.DataFrame(zip(time_column, data_column2), columns=['Time', 'Data'])
f, ax = plt.subplots()
sns.lineplot(df1.Time, df1.Data, label='foo', ax=ax)
sns.lineplot(df2.Time, df2.Data, label='bar', ax=ax)
ax.legend()
plt.show()
生成以下输出
重要的是两个线图都在同一个子图中(在本例中为 ax)。
我根据 DafaFrame
.
sns
创建了一个图
现在,我想在先前创建的图上添加来自另一个数据框的新曲线。
这是我的剧情代码:
tline = sns.lineplot(x='reads', y='time', data=df, hue='method', style='method', markers=True, dashes=False, ax=axs[0, 0])
tline.set_xlabel('Numero di reads')
tline.set_ylabel ('Time [s]')
tline.legend(loc='lower right')
tline.set_yscale('log')
tline.autoscale(enable=True, axis='x')
tline.autoscale(enable=True, axis='y')
现在我有另一个 Dataframe
与第一个 DataFrame
相同的列。如何在图例中添加带有自定义条目的新曲线?
这是DataFrame
的结构:
Dataset | Method | Reads | Time | Peak-memory |
---|---|---|---|---|
14M | Set | 14000000 | 7.33 | 1035204 |
20K | Set | 200000 | 0.38 | 107464 |
200K | Set | 20000 | 0.07 | 42936 |
2M | Set | 28428648 | 16.09 | 2347740 |
28M | Set | 2000000 | 1.41 | 240240 |
我建议像这样使用 matplotlibs OOP interface
import numpy as np
from matplotlib import pyplot as plt
import pandas as pd
import seaborn as sns
# generate sample data
time_column = np.arange(10)
data_column1 = np.random.randint(0, 10, 10)
data_column2 = np.random.randint(0, 10, 10)
# store in pandas dfs
df1 = pd.DataFrame(zip(time_column, data_column1), columns=['Time', 'Data'])
df2 = pd.DataFrame(zip(time_column, data_column2), columns=['Time', 'Data'])
f, ax = plt.subplots()
sns.lineplot(df1.Time, df1.Data, label='foo', ax=ax)
sns.lineplot(df2.Time, df2.Data, label='bar', ax=ax)
ax.legend()
plt.show()
生成以下输出
重要的是两个线图都在同一个子图中(在本例中为 ax)。