python - Seaborn:在点图中绘制多色点而不用断线
问题描述
我有一个这样的数据集。是否有可能绘制点,当颜色变化时线条不会中断?线的颜色,将绿色连接到红色,或将红色连接到绿色,可以是绿色或红色(没关系)。
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()
这使:
推荐阅读
- php - 尝试在 php 中显示带有条件查询的表
- vue.js - 如何在 Vue/Nuxt 中使用 Flowtype 和 eslint?
- c# - 在屏幕中单击时识别许多游戏对象并与选定的游戏对象进行交互
- vba - 发生错误时跳出循环,修复错误,跳回循环VBA
- azure - Azure ARM API 返回大小写不一致的位置
- java - Flexcube 的 eodm 自动化
- r - 将 R 数据框转换为 d3.hierarchy 模型的严格 JSON 列表
- javascript - 使用javascript替换textarea中句子中的多个单词
- machine-learning - 如何训练人工神经网络以在图像中找到匹配的位置
- google-bigquery - 如何在 BQ 中使用 union 找到最高销售额