python 如何在彩色图中绘制序列分割结果?

mspsb9vt  于 2023-08-02  发布在  Python
关注(0)|答案(1)|浏览(91)

我是新的序列分割领域。我想做的事情是这样的:给定时间序列(即视频),我沿着时间轴为该视频的每1秒分配一个标签。我可以有两个列表:

(1)  GroundTruth_List = ['sit', 'sit', 'sit', 'order_coco', 'order_coco', 'drink_coco']
(2)  Predicted_List = ['sit', 'sit', 'sit', 'order_coco', 'order_coco', 'drink_milk']

字符串
我希望能粗略地想象出这段视频中有多少错误的预测。在网上搜索后,我发现matplotlib可能是正确的方向。有人能提供一些示范性的代码,如何可视化上述两个列表?例如,表示两个列表的两条水平线,如果线段类是'sit',我们将其绘制为蓝色,但对于其他类,我们将自动将线绘制为不同的颜色。

camsedfj

camsedfj1#

  • 我会根据你的问题来回答 *

要可视化这两个列表,可以使用matplotlib创建一个水平条形图。每个段将表示为彩色条,其中颜色指示类别标签。下面是一个示例代码来实现这一点:

import matplotlib.pyplot as plt

# Given lists
GroundTruth_List = ['sit', 'sit', 'sit', 'order_coco', 'order_coco', 'drink_coco']
Predicted_List = ['sit', 'sit', 'sit', 'order_coco', 'order_coco', 'drink_milk']

# Prepare data for plotting
labels = set(GroundTruth_List + Predicted_List)
label_colors = plt.cm.tab20.colors[:len(labels)]  # Get a set of distinct colors

# Function to plot a segment as a colored bar
def plot_segment(start, end, label, color):
    plt.barh(0, end - start, left=start, height=0.5, color=color, alpha=0.7, label=label)

# Plot the GroundTruth_List
for i in range(len(GroundTruth_List)):
    start = i
    end = i + 1
    label = GroundTruth_List[i]
    color = label_colors[list(labels).index(label)]
    plot_segment(start, end, label, color)

# Plot the Predicted_List
for i in range(len(Predicted_List)):
    start = i
    end = i + 1
    label = Predicted_List[i]
    color = label_colors[list(labels).index(label)]
    plot_segment(start, end, label, color)

# Add legend and labels
plt.legend(loc='upper right')
plt.yticks([])
plt.xlabel('Time (seconds)')
plt.title('Sequence Segmentation Visualization')

plt.show()

字符串

相关问题