简体   繁体   English

在单个轴上绘制值和标签(一维散点图)

[英]Plot values but also labels on a single axis (1D scatter plot)

How to plot not only values but also the labels on an axis with matplotlib with a dict like this:如何使用matplotlib不仅绘制值,还绘制轴上的标签,如下所示:

D = {'label1': 7.33, 'label2': 7.12, 'label3': 4.26, 'label4': 6.98}

? ?

it should output它应该输出

在此处输入图片说明

This goal is to see the outliers very easily graphically, ie a 1D-scatter plot, like this:这个目标是非常容易地以图形方式查看异常值,即一维散点图,如下所示:

在此处输入图片说明

but with a label near each point.但在每个点附近都有一个标签。

You could use the minor and major ticklabels to alternate between showing the label above and below the axis.您可以使用次要和主要刻度标签来交替显示轴上方和下方的标签。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

D = {'label1': 7.33, 'label2': 7.12, 'label3': 4.26, 'label4': 6.98}

labs, vals = zip(*sorted([(k,v) for k,v in D.items()], key=lambda t: t[1] ))
ticks = ["{}\n{}".format(k,v) for k,v in zip(labs,vals)]

ax.set_xticks(vals[::2])
ax.set_xticklabels(ticks[::2])
ax.set_xticks(vals[1::2], minor=True)
ax.set_xticklabels(ticks[1::2], minor=True, va="bottom")

ax.tick_params(which="minor", direction="in", pad=-10 )


plt.plot(vals, list(range(len(vals))))
plt.show()

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM