我想绘制一些数据,但颜色取决于某些条件。理想情况下,我想在plotly和matplotlib(单独的脚本)中执行此操作
数据
例如我有以下数据
import pandas as pd
data = {
'X': [1, 2, 3, 4, 5,6,7,8,9,10],
'Y': [5, 4, 3, 2, 1,2,3,4,5,5],
'XL': [2, None, 4, None, None,None,4,5,None,3],
'YL': [3, None, 2, None, None,None,5,6,None,4],
'XR': [None, 4, None, 1, None,None,None,4,5,4],
'YR': [None, 3, None, 5, None,None,None,3,4,4]
}
df = pd.DataFrame(data)
简单的情节
所以用 matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# Plot X, Y
ax.plot(df['X'], df['Y'], linestyle='-', marker='o')
# Update plot settings
ax.set_title('Trajectory Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
# Show the plot
plt.show()
并有情节地
import plotly.graph_objects as go
# Create a scatter plot
fig = go.Figure(data=go.Scatter(x=df['X'], y=df['Y'], mode='lines+markers'))
# Update layout for better visibility
fig.update_layout(
title='Trajectory Plot',
xaxis_title='X-axis',
yaxis_title='Y-axis',
)
# Show the plot
fig.show()
问题
我想修改脚本,以便我可以根据 和 对是否存在使用不同的(XL,YL)
颜色(XR,YR)
。
- 灰色:不存在
- 红色:仅存在XL、YL
- 蓝色:仅存在XR、YR
- 绿色:两者都存在
最后应该是这样的(原谅我画的很粗糙,我把原来的蓝线涂掉了)
如何在 matplotlib 和plotly 中添加它?
IIUC您可以使用 matplotlib 的LineCollection ,请参阅此处的示例
输出:
对于情节,您可以拥有的最佳解决方案是:
输出:
一种解决方案是首先绘制整个数据集,而不使用标记。然后,最重要的是,根据您提到的条件绘制彩色标记。
输出将如下所示:
这也没有彩色线条,但我认为这样应该更正确。否则,您必须选择要绘制与标记相同颜色的标记(数据点)的哪一侧(左侧或右侧)。
label
如果需要,您还可以通过添加到每个标记图来添加图例:带有图例的输出将如下所示:
希望这是有道理的
干杯达维德