为了账号安全,请及时绑定邮箱和手机立即绑定

我们如何根据颜色标记散点图的图例

我们如何根据颜色标记散点图的图例

慕勒3428872 2021-07-14 21:41:59
我正在绘制一个图表来可视化一些排序算法在不同数据大小上的运行时间。条件是运行时间应该在 y 轴上,数据大小应该在 x 轴上。我通过将不同算法的运行时间与数据大小相比较并给每个标记不同的颜色来绘制散点图。同样,我绘制了 3 个其他数据大小,但对于不同的算法使用相同的颜色。我想在图表中添加一个图例,以便用户了解这个特定的颜色点对应于这个特定的算法。我想不出合适的方法。我在网上搜索了一些场景,他们正在根据不同的散点图添加图例。但是,我想为基于颜色的点添加图例。此外,对于这种情况,您能否建议更好的绘图曲线。这是我用于图形生成的代码。def visualize_datasize(dataset):    datasize=len(dataset)    for i in range(4,0,-1):        run_time=getRunTime(dataset,int(datasize/i))        plt.scatter([int(datasize/i)]*5,run_time,color=['red','green','blue','yellow','black'])    plt.xlabel('Size of the dataset')    plt.ylabel('Run time')    plt.title('Run time vs datasize for various sorting algorithms')    plt.show()
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

最简单、最一致的方法是为每个算法制作散点图。此外,您可能希望为此使用面向对象的接口。


import matplotlib.pyplot as plt


fig, ax = plt.subplots()


def calculate_runtimes(algo, data, sizes):

    if algo == 'name1':

        # return timings for algorithm 1 given data at given sizes

    elif algo == 'name2':

        # ...


algo_labels = ['name1', 'name2', 'name3', 'name4', 'name5']

sizes = [1, 2, 4, 8, 16]

algo_runtimes = {name: calculate_runtimes(name, dataset, sizes) for name in algo_labels}

colors = ['red', 'green', 'blue', 'yellow', 'black']

x_positions = [len(dataset)*size for size in sizes]


for (label, runtimes), color in zip(algo_runtimes.items(), colors):

    ax.scatter(x_positions, runtimes, color=color, label=label)


ax.legend()


查看完整回答
反对 回复 2021-07-28
  • 1 回答
  • 0 关注
  • 353 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信