Qiang0508 发表于 2023-5-22 18:48:17

matlab脚本画投影能带没有横坐标和网格线


您好,我用vaspkit处理投影能带,用群里提供的matlab脚本画图,但是画出来的图片为什么和给的示例不一样,没有横坐标,也没有图片中的白色网格线,麻烦您帮忙看一下,谢谢。我把我的文件都上传到附件了,麻烦帮忙看一下,谢谢。

Dirac-learn 发表于 2023-5-24 22:57:56

% First run vaspkit (version => 1.2.3) with task 216, 257 or 285 to get MOMENTUM.grd, ENERGY.grd and WEIGHT.grd

clc;clear;clear all;

momentum=load('MOMENTUM.grd');
energy=load('ENERGY.grd');
weight=load('WEIGHT.grd');
ymin=-5.0;
ymax=5.0;
fig_title =' Nb-d'    ;

% Read content from KLABELS, assign values to kpoint_value and k_value
fid = fopen('KLABELS','r');%打开文件句柄
FormatString='%s';
High_Symmetry_Kpoints=textscan(fid,FormatString,'HeaderLines',1,'Delimiter',''); %跳过第1行,以空格为数据的分隔符
High_Symmetry_Kpoints{1}(end)=[];%删除最后一行
%初始化
kpoint_value = cell(1,length(High_Symmetry_Kpoints{1}));
k_value = length(High_Symmetry_Kpoints{1});
fclose(fid);%关闭文件句柄
for i = 1:length(High_Symmetry_Kpoints{1})
a= strsplit(High_Symmetry_Kpoints{1,1}{i,1},' ');
kpoint_value(i)=a(1);
k_value(i) = str2double(cell2mat(a(2)));
end            
momentum_min = min(momentum(:));
momentum_max = max(momentum(:));
k_value(length(k_value))=momentum_max;
k_value(1)=momentum_min;
energy_min   = min(energy(:));
energy_max   = max(energy(:));
colormap('jet')
set(gca,'Fontsize',20)

%subplot(1, 5,subfig_number)
fig = pcolor(momentum, energy, weight);
shading interp;
set(fig, 'LineStyle', 'none')
title(fig_title)
ylabel('E-E_F (eV)')
ylim();
set(gca,'ytick',ymin:1:ymax)
set(gca, 'XTickLabel', kpoint_value , 'XTick', k_value,'Fontname', 'Times newman','Fontsize',20)

line(, , 'LineStyle', '--', 'Color', 'w', 'LineWidth',1)                              
for a=2:1:length(k_value)-1
line(*k_value(a), , 'LineStyle', '--', 'Color', 'w', 'LineWidth',1)
end

Dirac-learn 发表于 2023-5-24 23:08:14

简单修改了一下,你用这个代码算一下看看

Qiang0508 发表于 2023-5-25 10:21:28

Dirac-learn 发表于 2023-5-24 23:08
简单修改了一下,你用这个代码算一下看看

太感谢您了,我去试一下,多谢:lol
页: [1]
查看完整版本: matlab脚本画投影能带没有横坐标和网格线