python - 使用 Seaborn 将散点图上对应的 x 和 y 事件用一条线连接起来
问题描述
我有一个包含 24 个事件的 csv 文件。第一列是“事件类型”,每个事件交替显示“开始”和“完成”,每个事件的 x 和 y 坐标都是随机的。这是 CSV 文件的样子。
这是我使用此信息打印散点图的代码:
import seaborn as sns
Events=pd.read_csv('StartFinish.csv')
Scatter = sns.scatterplot(x='xCoordinate', y='yCoordinate', hue='Event Type', data=Events)
这是我在 Spyder 中运行此代码得到的结果:
我唯一的问题是我需要添加将每个“开始”事件与其相应的“完成”事件连接起来的行。(相应的“完成”事件是紧随其后发生的事件。)
除了 pandas、numpy、matplotlib.pyplot 和 seaborn 之外,我如何在不导入任何库的情况下执行此操作?
提前感谢您的帮助。
解决方案
import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Replace the following with your own dataframe
# Events=pd.read_csv('StartFinish.csv')
Events = np.random.randint(0, 10, size=(24, 2))
Events = pd.DataFrame(Events, columns=['xCoordinate', 'yCoordinate'])
Events['Event Type'] = 'Start'
Events.loc[1::2, 'Event Type'] = 'Finish'
Scatter = sns.scatterplot(x='xCoordinate', y='yCoordinate', hue='Event Type', data=Events)
Scatter
for n in range(0, len(Events), 2):
plt.plot([Events.loc[n, 'xCoordinate'], Events.loc[n+1, 'xCoordinate']], [Events.loc[n, 'yCoordinate'], Events.loc[n+1, 'yCoordinate']], 'k--')
结果将是
如果您想要更像熊猫的东西,请尝试以下操作:
import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Replace the following with your own dataframe
# Events=pd.read_csv('StartFinish.csv')
np.random.seed(0)
Events = np.random.randint(0, 10, size=(24, 2))
Events = pd.DataFrame(Events, columns=['xCoordinate', 'yCoordinate'])
Events['Event Type'] = 'Start'
Events.loc[1::2, 'Event Type'] = 'Finish'
Scatter = sns.scatterplot(x='xCoordinate', y='yCoordinate', hue='Event Type', data=Events)
Scatter
Events['group'] = Events.index//2
Events.groupby('group').apply(lambda x: plt.plot([x.loc[0, 'xCoordinate'], x.loc[1, 'xCoordinate']],
[x.loc[0, 'yCoordinate'], x.loc[1, 'yCoordinate']], 'k--'));
推荐阅读
- itext - ItextSharp - 在单独的行上添加文本水印
- frama-c - 获取 Frama-C 的快速帮助信息
- javascript - 反应原生,捆绑失败
- ios - iOS推送通知:在用户离线注销时为用户取消注册推送通知的最佳方式?
- css - Material UI:给 TableBody 一个最大高度并使其垂直滚动
- c# - 将参数从自定义菜单传递到报告
- database - 为什么 Janus Graph 不称为框架,而 Apache TInkerPop 是?
- javascript - 将 JSON 对象转换为 PHP 数组
- css - 防止 :after close-quote 换行
- javascript - Stripe 正在创建客户,但不向卡收费