Matplotlib绘图上的名称点

时间:2018-08-03 12:42:44

标签: python matplotlib plot annotations

我搜索并发现,在matplotlib中使用注释进行jupyter,我们可以命名一个点的x和y。

我尝试按照您的建议进行操作。

import matplotlib.pyplot as plt
import pandas as pd

def fit_data():

    fig = plt.figure(1,figsize=(20,6))
    plt.subplot(111)

    data1 = pd.DataFrame({"ID" : list(range(11)), 
                   "R" : list(range(11)),
                   "Theta" : list(range(11))})

    plt.scatter(data1['R'], data1['Theta'],  marker='o', color='b', s=15)

    for i, row in data1.iterrows():
        plt.annotate(row["ID"], xy=(row["R"],row["Theta"]))

    plt.xlabel('R',size=20)
    plt.ylabel('Theta',size=20)

    plt.show()
    plt.close()

fit_data()

它仍然没有从我的数据中获取ID。它仍在绘制任意图。 this is the image after using the revised code

我的数据如下

1 19.177    24.642
2 9.398     12.774
3 9.077     12.373
4 15.287    19.448
5 4.129     5.41
6 2.25      3.416
7 11.674    15.16
8 10.962    14.469
9 1.924     3.628
10 2.087    3.891
11 9.706    13.186

1 个答案:

答案 0 :(得分:1)

我想这个困惑来自于这样一个事实:虽然scatter可以一次绘制所有点,而注解是一个奇异的对象。因此,数据框中每行需要一个annotation

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({"ID" : list(range(6)),          # Do not copy this part.
                   "R" : [5,4,1,2,3,4],            # Use your own data 
                   "Theta" : [20,15,40,60,51,71]}) # instead.

fig = plt.figure(1,figsize=(20,6))
plt.subplot(111)

plt.scatter(df['R'], df['Theta'],  marker='o', color='b', s=15)

for i, row in df.iterrows():
    plt.annotate(row["ID"], xy=(row["R"],row["Theta"]))

plt.xlabel('R',size=20)
plt.ylabel('Theta',size=20)

plt.show()