我正在使用以下代码将DataFrame绘制为散点图:
我的数据框看起来像这样 -
Sector AvgDeg
0 1 52
1 2 52
2 3 52
3 4 54
4 5 52
... ... ...
df.plot.scatter(x='Sector', y='AvgDeg', s=df['AvgDeg'], color='LightBlue',grid=True)
plt.show()
我需要的是用不同的颜色和相应的图例绘制每个点。例如:-blue dot-'Sector 1', - red dot-'Sector 2',依此类推。
你知道怎么做吗? TKS !!
答案 0 :(得分:1)
您需要做的是使用与散点图的c
参数中的点大小相同的列表。
cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])
txt = ["text1", "text2", "text3", "text4"]
fig, ax = plt.subplots()
x = np.arange(1, 5)
y = np.arange(1, 5)
#c will change the colors of each point
#s is the size of each point...
#c_map is the color map you want to use
ax.scatter(x, y,s = 40, cmap = cmap_light, c=np.arange(1, 5))
for i, j in enumerate(txt):
#use the below code to display the text for each point
ax.annotate(j, (x[i], y[i]))
plt.show()
为31点分配更多不同的颜色,例如你只需更改尺寸......
ax.scatter(x, y,s = 40, cmap = cmap_light, c=np.arange(1, 32))
同样,您可以通过更改上面的txt
列表来注释这些点。
答案 1 :(得分:0)
我会这样做:
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.style.use('ggplot')
colorlist = list(mpl.colors.ColorConverter.colors.keys())
ax = df.plot.scatter(x='Sector', y='AvgDeg', s=df.AvgDeg*1.2,
c=(colorlist * len(df))[:len(df)])
df.apply(lambda x: ax.text(x.Sector, x.AvgDeg, 'Sector {}'.format(x.Sector)), axis=1)
plt.show()
结果