matplotlib / pyplot:在散点图中只打印一次?

时间:2015-11-19 10:26:42

标签: pandas matplotlib scatter-plot

我正在寻找一种方法来清理我的pyplot散点图中的刻度。

要使用字符串作为元素从Pandas数据集列创建散点图,我按照[2]中的示例 - 给我一个很好的散点图:

pyplot scatter plot with 10k ticks of ~200 unique names

输入是10k数据点,其中X轴只有~200个唯一的“名称”,它们与标量相匹配以进行绘图。显然,在x轴上绘制所有10k刻度是有点时钟的。那么,我正在寻找一种方法,只打印每个唯一的滴答一次而不是每个数据点?

我的代码如下:

    fig2 = plt.figure()
    WNsUniques, WNs = numpy.unique(taskDataFrame['modificationhost'], return_inverse=True)
    scatterWNs = fig2.add_subplot(111)
    scatterWNs.scatter(WNs, taskDataFrame['cpuconsumptiontime'])
    scatterWNs.set(xticks=range(len(WNsUniques)), xticklabels=WNsUniques)
    plt.xticks(rotation='vertical')
    plt.savefig("%s_WNs-CPUTime_scatter.%s" % (dfName,"pdf"))

实际上,我希望将情节x刻度设置为唯一的名称应该足够了 - 但显然不是吗?可能这很容易,但是如何将我的子图的刻度减少到唯一一次(如果它们还没有被numpy.unique返回的唯一化?)? 也许有人对我有想法?

干杯谢谢,   托马斯

1 个答案:

答案 0 :(得分:1)

您可以使用set_xticks方法来完成此操作。请注意,带有标签的200轴刻度在这样的小图上仍然非常强大,这是您可能已经在上面的代码中看到的。如果没有完整的代码,我不能肯定地说。

此外,WNsUniques的大小是多少?这可以很容易地用于检查您对unique的调用是否符合您的想法。

相关问题