我有一个这样的数据集。是否可以绘制点,当颜色改变时线条不会折断?线的颜色(从绿色到红色或从红色到绿色的连接)可以是绿色或红色(无所谓)。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
index = np.arange(1, 49, 1)
value = np.append(np.arange(1,25,1), np.arange(25,1,-1))
color_choice = np.random.choice(['YES', 'NO'], 48, p=[0.3, 0.7])
dt = pd.DataFrame(zip(index, value, color_choice), columns=['index', 'value', 'color_choice'])
plt.figure(figsize = (16, 5))
color_dict = dict({'NO':'green', 'YES':'red'})
sns.pointplot(x="index", y="value", data=dt, hue="color_choice", palette=color_dict);
我正在寻找的应该是一个连续的图,点连接在一起,并且根据color_choice
列中的条件,点可以是绿色或红色。它们之间的线可以是任何颜色
您可以使用matplotlib
代替seaborn
,以一种不太优雅的方式进行操作:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
index = np.arange(1, 49, 1)
value = np.append(np.arange(1,25,1), np.arange(25,1,-1))
color_choice = np.random.choice(['YES', 'NO'], 48, p=[0.3, 0.7])
dt = pd.DataFrame(zip(index, value, color_choice), columns=['index', 'value', 'color_choice'])
plt.figure(figsize = (16, 5))
color_dict = dict({'NO':'green', 'YES':'red'})
plt.plot(dt["index"], dt["value"], color="green", lw=3)
plt.plot(dt[dt["color_choice"] == "NO"]["index"], dt[dt["color_choice"] == "NO"]["value"], "o", color = "green", markersize = 10)
plt.plot(dt[dt["color_choice"] == "YES"]["index"], dt[dt["color_choice"] == "YES"]["value"], "o", color = "red", markersize = 10)
plt.show()
给出: