は、このデータフレームを持っていると仮定します
c_1 c_2 c_3 time
0 0.548814 NaN 1.0 1
1 0.715189 NaN NaN 2
2 0.602763 3.0 NaN 3
3 0.544883 NaN NaN 4
4 0.423655 5.0 NaN 5
5 0.645894 NaN 6.0 6
次のプロットは、あなたが
た後、それは次のコードを使用して製造することができるしているものである場合:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(0)
time = np.arange(1,7)
c_1 = np.random.rand(6)
c_2 = time*np.array([np.nan, np.nan, 1, np.nan, 1, np.nan])
c_3 = time*np.array([1, np.nan, np.nan, np.nan, np.nan, 1])
df = pd.DataFrame({"time":time, "c_1":c_1,"c_2":c_2,"c_3":c_3 })
ax = df.plot("time", "c_1")
ax.plot(df["c_2"], df["c_1"], marker="s", color="limegreen", linestyle="")
ax.plot(df["c_3"], df["c_1"], marker="o", color="crimson", linestyle="")
# to be able to draw a line with coordinates
# from two different columns, we need to join them
df2 = df[["c_1","c_2"]].dropna()
df3 = df[["c_1","c_3"]].dropna().rename(columns = {'c_3':'c_2'}, inplace = False)
df4 = pd.concat([df2, df3]).sort_values(by=["c_2"])
ax.plot(df4["c_2"], df4["c_1"], color="burlywood", linestyle=":", lw=2.5)
ax.set_xlim(0,7)
plt.show()
@splinter、多くの質問stackoverflowであなたに不透明なようです。 Time列の** t1は時間(つまり文字列ではなくdatetime)**を表し、 'plt.plot(df ['c_1'])'は時間に対して値をプロットする有効な操作であることが明らかです。そうでない場合は、 'df.reset_index()'を実行するための建設的な提案が役に立ちます。 – Yeile