折线图Matplotlib上的精确书写值

问题描述 投票:0回答:1
import matplotlib.pyplot as plt
import pandas as pd

objects = ('A', 'B', 'C')
performance = [avgA, avgB, avgC]
exact = plt.plot( performance, alpha=0.5, color= 'purple')
plt.xticks(y_pos, objects)
plt.xlabel('Compression Method')
plt.ylabel('Average Distance b/w Uncompressed & Compressed Point')
plt.title('Evaluation of Different Compression Methods - Averages')
plt.tight_layout()
plt.show()

我的图表有3个问题:

  1. 我希望X轴标签为A,B和C,而不是0.0、1.0和2.0。 y轴上的值正确。

  2. 如何显示我的线图上A / B / C的精确值?例如,x轴上的A对应于y轴上的0.00999,但是在该图上,精确值不是写在任何地方。就像在条形图中一样,我们可以在条形图的顶部写入值。对于折线图,我们可以这样做吗?

  3. 此外,我怎么改善规模?目前,我的图形显示的y轴值介于0.0到0.5之间,但我想使其为更精确enter image description here

python matplotlib graph data-science linegraph
1个回答
0
投票

要设置xticks,最好只将plot作为其第一个参数调用objects。要设置更多的拍子,MultipleLocator可用于指示主要和次要刻度线之间的距离(主要刻度线显示一个数字)。

要向绘图中添加文本,只需调用plt.annotate('text', xy=(x,y)),因为x只是标签,因此x分别为0、1、2。 y是通常的y值。您可以添加许多选项来放置文本,带或不带箭头,对齐等。请参见documentation

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator

avgA, avgB, avgC = 0.009990256984352774, 0.0014206548643907065, 0.055161861569464204
objects = ('A', 'B', 'C')
performance = [avgA, avgB, avgC]
exact = plt.plot( objects, performance, alpha=0.5, color= 'purple')
ax = plt.gca()
ax.yaxis.set_major_locator(MultipleLocator(0.005))
ax.yaxis.set_minor_locator(MultipleLocator(0.001))
for i, avg in enumerate(performance):
    plt.annotate(f'{avg:0.3}', xy=(i, avg))
plt.xlabel('Compression Method')
plt.ylabel('Average Distance b/w Uncompressed & Compressed Point')
plt.title('Evaluation of Different Compression Methods - Averages')
plt.tight_layout()
plt.show()

example plot

© www.soinside.com 2019 - 2024. All rights reserved.