我正在寻找一种将数字或文字插入标记的方法。 matplotlib.pyplot.plot(*args, **kwargs)
文档中没有任何内容。
默认缩放级别会在边缘放置标记,从而减少用于标记文本的可用空间。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4 ,5]
y = [1, 4, 9, 6, 10]
plt.plot(x, y, 'ro',markersize=23)
plt.show()
答案 0 :(得分:3)
正如jkalden所说,annotate
可以解决你的问题。函数xy
- 参数可让您定位文本,以便将其放在标记的位置。
关于你的" zoom"问题,matplotlib
默认会在您正在绘制的最小值和最大值之间拉伸帧。它会使您的外部标记的中心位于图形的边缘,并且只有一半标记可见。要覆盖默认的x和y限制,您可以使用set_xlim
和set_ylim
。这里定义了一个偏移量来控制边际空间。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4 ,5]
y = [1, 4, 9, 6, 10]
fig, ax = plt.subplots()
# instanciate a figure and ax object
# annotate is a method that belongs to axes
ax.plot(x, y, 'ro',markersize=23)
## controls the extent of the plot.
offset = 1.0
ax.set_xlim(min(x)-offset, max(x)+ offset)
ax.set_ylim(min(y)-offset, max(y)+ offset)
# loop through each x,y pair
for i,j in zip(x,y):
corr = -0.05 # adds a little correction to put annotation in marker's centrum
ax.annotate(str(j), xy=(i + corr, j + corr))
plt.show()
以下是它的外观:
答案 1 :(得分:1)
这是snake_charmer方法的修订版。我使用对齐选项(而不是手动偏移)将文本放在点上居中,而其他选项则用于颜色,大小和粗体(粗细)。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4 ,5]
y = [1, 4, 9, 6, 10]
fig, ax = plt.subplots()
# instanciate a figure and ax object
# annotate is a method that belongs to axes
ax.plot(x, y, 'ro',markersize=23)
## controls the extent of the plot.
offset = 1.0
ax.set_xlim(min(x)-offset, max(x)+ offset)
ax.set_ylim(min(y)-offset, max(y)+ offset)
# loop through each x,y pair
for i,j in zip(x,y):
ax.annotate(str(j), xy=(i, j), color='white',
fontsize="large", weight='heavy',
horizontalalignment='center',
verticalalignment='center')
plt.show()
答案 2 :(得分:0)
您可以使用MathText进行此操作。 以下是matplotlib.org
中的说明fig, ax = plt.subplots()
fig.subplots_adjust(left=0.4)
marker_style.update(mec="None", markersize=15)
markers = ["$1$", r"$\frac{1}{2}$", "$f$", "$\u266B$", r"$\mathcal{A}$"]
for y, marker in enumerate(markers):
# Escape dollars so that the text is written "as is", not as mathtext.
ax.text(-0.5, y, repr(marker).replace("$", r"\$"), **text_style)
ax.plot(y * points, marker=marker, **marker_style)
format_axes(ax)
fig.suptitle('mathtext markers', fontsize=14)
plt.show()