将列数据映射到图形属性

时间:2015-03-02 22:02:57

标签: python matplotlib dataframe

我有一个名为df的数据框,如下所示:

Qname    X    Y    Magnitude
Bob      5    19    10
Tom      6    20    20
Jim      3    30    30

我想制作数据的可视文本图。我想在一个数字上绘制Qnames,其坐标设置为= X,Y和s = Size。

我试过了:

fig = plt.figure()
ax = fig.add_axes((0,0,1,1))
X = df.X
Y = df.Y
S = df.magnitude
Name = df.Qname
ax.text(X, Y, Name, size=S, color='red', rotation=0, alpha=1.0, ha='center', va='center')
fig.show()

然而,我的阴谋中没有任何东西出现。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这应该让你开始。 Matplotlib不会为您处理文本放置,因此您可能需要使用它。

import pandas as pd
import matplotlib.pyplot as plt

# replace this with your existing code to read the dataframe
df = pd.read_clipboard()

plt.scatter(df.X, df.Y, s=df.Magnitude)


# annotate the plot
# unfortunately you have to iterate over your points
# see http://stackoverflow.com/q/5147112/553404

for idx, row in df.iterrows():
    # see http://stackoverflow.com/q/5147112/553404
    # for better annotation options
    plt.annotate(row['Qname'], xy=(row['X'], row['Y']))

plt.show()