Plotting line with different colors

Viewed 3984
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df1 = pd.DataFrame(np.random.randint(0,15,size=(15, 1)))
df2 = pd.DataFrame(np.random.randint(20,35,size=(10, 1)))


frames = [df1, df2]
result = pd.DataFrame(pd.concat(frames))

df3 = result.cumsum()
df3 = df3.reset_index(drop=False)
print(df3)
df3.plot(y=0)
plt.show()

Is it possible to plot the df3 line with two different colors? First color to be for rows 0 to 14 and second color for rows 15 to 24. In a way I want to mark where df1 has ended and df2 has started.

2 Answers

What about

#[...]
df3 = result.cumsum()
df3 = df3.reset_index(drop=False)
plt.plot(df3.mask(df3.apply(lambda x: x.index < 15))[0], color='blue')
plt.plot(df3.mask(df3.apply(lambda x: x.index > 15))[0], color='green')
plt.show()
plt.close()# do not forget this to save you from Runtime Error.

enter image description here

Just plot only the part of the dataframe which you want in whatever color you like, e.g. df3.iloc[:15,:].plot(color="green").

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df1 = pd.DataFrame(np.random.randint(0,15,size=(15, 1)))
df2 = pd.DataFrame(np.random.randint(20,35,size=(10, 1)))


frames = [df1, df2]
result = pd.DataFrame(pd.concat(frames))

df3 = result.cumsum()
df3 = df3.reset_index(drop=False)
print(df3)
ax = df3.iloc[:15,:].plot(y=0, color="crimson")
df3.iloc[15:,:].plot(y=0, color="C0", ax=ax)
plt.show()

enter image description here

Related