如何做带有标签的散点图

比如我们想做下面的图
在这里插入图片描述


```python
import os
import matplotlib.pyplot as plt
from pylab import plot
import pylab as pl
import pandas as pd
x1=list(df.loc[30:39,'ENMB'])
y1=list(df.loc[30:39,"Energy"].apply(lambda x:round(x,2)))
name1=list(df.loc[30:39,"Elements"])
x2=list(df.loc[40:49,'ENMB'])
y2=list(df.loc[40:49,"Energy"].apply(lambda x:round(x,2)))
name2=list(df.loc[40:49,"Elements"])
x3=list(df.loc[50:59,'ENMB'])
y3=list(df.loc[50:59,"Energy"].apply(lambda x:round(x,2)))
name3=list(df.loc[50:59,"Elements"])
plt.figure(figsize=(10,5))
plt.rc('font', family='Times New Roman')
plt.rcParams['savefig.dpi'] = 300  # 图片像素
plt.rcParams['figure.dpi'] = 300  # 分辨率
plt.tick_params(axis='x', direction='in')
plt.tick_params(axis='y', direction='in')
p1=plt.scatter(x1, y1, s=500, marker='o', linewidths=1, facecolor='gold', edgecolors='k', alpha=0.8)
for i in range(len(x1)):
    plt.annotate(name1[i], xy=(x1[i], y1[i]), xytext=(x1[i]-0.01, y1[i]-0.02))
p2=plt.scatter(x2, y2, s=500, marker='o', linewidths=1, facecolor='orangered', edgecolors='k', alpha=0.8)
for i in range(len(x2)):
    plt.annotate(name2[i], xy=(x2[i], y2[i]), xytext=(x2[i]-0.015, y2[i]-0.02))
p3=plt.scatter(x3, y3, s=500, marker='o', linewidths=1, facecolor='royalblue', edgecolors='k', alpha=0.8)
for i in range(len(x3)):
    plt.annotate(name3[i], xy=(x3[i], y3[i]), xytext=(x3[i]-0.015, y3[i]-0.02))
plt.xlabel('Electronegativity(MB)', fontproperties='Times New Roman', fontsize=16)
plt.ylabel('Absorption Energy(eV)', fontproperties='Times New Roman', fontsize=16)
#plt.xlim = (min(min(x1),min(x2),min(x3)),max(max(x1),max(x2),max(x3))+5)
#plt.ylim = (min(min(y1),min(y2),min(y3)),max(max(y1),max(y2),max(y3)))
#plt.axhline(y=0.489, color="k", linestyle="dashed")
plt.xticks(fontproperties='Times New Roman', fontsize=16)
plt.yticks(fontproperties='Times New Roman', fontsize=16)
legend_font = {"family": "Times New Roman"}

legend_font = {"family": "Times New Roman", "size": 12}
plt.legend([p1, p2, p3],['3d','4d','5d'], prop=legend_font, labelspacing= 1.8, ncol=2, frameon=False)

plt.savefig(r"C:\Users\CR\Desktop\钴基ENMB")#保存图片
plt.show()

在实际使用中,改x1,y1,name1等就可以了

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值