Seaborn:在点图中绘制多色点而没有折线

问题描述 投票:1回答:1

我有一个这样的数据集。是否可以绘制点,当颜色改变时线条不会折断?线的颜色(从绿色到红色或从红色到绿色的连接)可以是绿色或红色(无所谓)。

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);

enter image description here

我正在寻找的应该是一个连续的图,点连接在一起,并且根据color_choice列中的条件,点可以是绿色或红色。它们之间的线可以是任何颜色

python python-3.x pandas matplotlib seaborn
1个回答
1
投票

您可以使用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()

给出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.