mirror of https://github.com/phonopy/phonopy.git
Minor fixes
This commit is contained in:
parent
48992c1640
commit
f180cf9484
|
@ -492,7 +492,7 @@ class Phonopy:
|
|||
def write_yaml_mesh(self):
|
||||
self._mesh.write_yaml()
|
||||
|
||||
def plot_band_structure_and_dos(self, symbols=None):
|
||||
def plot_band_structure_and_dos(self, pdos_indices=None, symbols=None):
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.gridspec as gridspec
|
||||
if symbols:
|
||||
|
@ -506,10 +506,18 @@ class Phonopy:
|
|||
ax2 = plt.subplot(gs[0, 1], sharey=ax1)
|
||||
plt.subplots_adjust(wspace=0.03)
|
||||
plt.setp(ax2.get_yticklabels(), visible=False)
|
||||
self._total_dos.plot(plt,
|
||||
ylabel="",
|
||||
draw_grid=False,
|
||||
flip_xy=True)
|
||||
|
||||
if pdos_indices is None:
|
||||
self._total_dos.plot(plt,
|
||||
ylabel="",
|
||||
draw_grid=False,
|
||||
flip_xy=True)
|
||||
else:
|
||||
self._pdos.plot(plt,
|
||||
indices=pdos_indices,
|
||||
ylabel="",
|
||||
draw_grid=False,
|
||||
flip_xy=True)
|
||||
|
||||
return plt
|
||||
|
||||
|
|
|
@ -100,9 +100,6 @@ def plot_partial_dos(pyplot,
|
|||
ylabel=None,
|
||||
draw_grid=True,
|
||||
flip_xy=False):
|
||||
pyplot.grid(draw_grid)
|
||||
pyplot.xlabel('Frequency')
|
||||
pyplot.ylabel('Partial density of states')
|
||||
plots = []
|
||||
|
||||
num_atom = len(partial_dos)
|
||||
|
@ -119,10 +116,20 @@ def plot_partial_dos(pyplot,
|
|||
print "Your specified atom number is out of range."
|
||||
raise ValueError
|
||||
pdos_sum += partial_dos[i]
|
||||
plots.append(pyplot.plot(frequency_points, pdos_sum))
|
||||
if flip_xy:
|
||||
plots.append(pyplot.plot(pdos_sum, frequency_points))
|
||||
else:
|
||||
plots.append(pyplot.plot(frequency_points, pdos_sum))
|
||||
|
||||
if legend is not None:
|
||||
pyplot.legend(legend)
|
||||
|
||||
if xlabel:
|
||||
pyplot.xlabel(xlabel)
|
||||
if ylabel:
|
||||
pyplot.ylabel(ylabel)
|
||||
|
||||
pyplot.grid(draw_grid)
|
||||
|
||||
class NormalDistribution:
|
||||
def __init__(self, sigma):
|
||||
|
@ -366,12 +373,36 @@ class PartialDos(Dos):
|
|||
"""
|
||||
return self._frequency_points, self._partial_dos
|
||||
|
||||
def plot(self, pyplot, indices=None, legend=None):
|
||||
def plot(self,
|
||||
pyplot,
|
||||
indices=None,
|
||||
legend=None,
|
||||
xlabel=None,
|
||||
ylabel=None,
|
||||
draw_grid=True,
|
||||
flip_xy=False):
|
||||
|
||||
if flip_xy:
|
||||
_xlabel = 'Partial density of states'
|
||||
_ylabel = 'Frequency'
|
||||
else:
|
||||
_xlabel = 'Frequency'
|
||||
_ylabel = 'Partial density of states'
|
||||
|
||||
if xlabel is not None:
|
||||
_xlabel = xlabel
|
||||
if ylabel is not None:
|
||||
_ylabel = ylabel
|
||||
|
||||
plot_partial_dos(pyplot,
|
||||
self._frequency_points,
|
||||
self._partial_dos,
|
||||
indices=indices,
|
||||
legend=legend)
|
||||
legend=legend,
|
||||
xlabel=_xlabel,
|
||||
ylabel=_ylabel,
|
||||
draw_grid=draw_grid,
|
||||
flip_xy=flip_xy)
|
||||
|
||||
def write(self):
|
||||
if self._tetrahedron_mesh is None:
|
||||
|
|
|
@ -221,9 +221,9 @@ if not options.is_gnuplot:
|
|||
|
||||
plt.xlim(distances[0], distances[-1])
|
||||
if options.f_max is not None:
|
||||
plt.ylim(ymax = options.f_max)
|
||||
plt.ylim(ymax=options.f_max)
|
||||
if options.f_min is not None:
|
||||
plt.ylim(ymin = options.f_min)
|
||||
plt.ylim(ymin=options.f_min)
|
||||
plt.axhline(y=0, linestyle=':', linewidth=0.5, color='b')
|
||||
if len(filenames) == 1:
|
||||
xticks = segment_positions + [distances[-1]]
|
||||
|
@ -251,6 +251,10 @@ if not options.is_gnuplot:
|
|||
plt.setp(ax2.get_yticklabels(), visible=False)
|
||||
plt.plot(dos, dos_frequencies)
|
||||
plt.xlabel('DOS')
|
||||
if options.f_max is not None:
|
||||
plt.ylim(ymax=options.f_max)
|
||||
if options.f_min is not None:
|
||||
plt.ylim(ymin=options.f_min)
|
||||
|
||||
if options.output_filename is not None:
|
||||
plt.rcParams['pdf.fonttype'] = 42
|
||||
|
|
|
@ -1012,13 +1012,12 @@ elif run_mode == 'band' or run_mode == 'mesh' or run_mode == 'band_mesh':
|
|||
|
||||
# Partial DOS
|
||||
elif (settings.get_is_eigenvectors() and
|
||||
(options.is_graph_plot or settings.get_is_dos_mode()) and
|
||||
(not settings.get_is_thermal_properties())):
|
||||
(options.is_graph_plot or settings.get_is_dos_mode())):
|
||||
p_direction = settings.get_projection_direction()
|
||||
if log_level > 0:
|
||||
if p_direction is not None:
|
||||
print "Projection direction:", np.array(p_direction)
|
||||
print "Calculating PDOS..."
|
||||
print "Calculating partial DOS..."
|
||||
dos_range = settings.get_dos_range()
|
||||
phonon.set_partial_DOS(
|
||||
sigma=settings.get_sigma(),
|
||||
|
@ -1032,7 +1031,10 @@ elif run_mode == 'band' or run_mode == 'mesh' or run_mode == 'band_mesh':
|
|||
if options.is_graph_plot:
|
||||
pdos_indices = settings.get_pdos_indices()
|
||||
if pdos_indices is None:
|
||||
pdos_indices = [range(primitive.get_number_of_atoms())]
|
||||
pdos_indices = [[x] for x in
|
||||
range(primitive.get_number_of_atoms())]
|
||||
|
||||
if options.is_graph_plot and run_mode != 'band_mesh':
|
||||
plot = phonon.plot_partial_DOS(
|
||||
pdos_indices=pdos_indices,
|
||||
legend=([np.array(x) + 1 for x in pdos_indices]))
|
||||
|
@ -1069,13 +1071,23 @@ elif run_mode == 'band' or run_mode == 'mesh' or run_mode == 'band_mesh':
|
|||
else:
|
||||
plot.show()
|
||||
|
||||
if options.is_graph_plot and run_mode == 'band_mesh':
|
||||
if (run_mode == 'band_mesh' and
|
||||
options.is_graph_plot and
|
||||
not settings.get_is_thermal_properties() and
|
||||
not settings.get_is_thermal_displacements() and
|
||||
not settings.get_is_thermal_displacement_matrices() and
|
||||
not settings.get_is_thermal_distances()):
|
||||
if settings.get_is_eigenvectors():
|
||||
plot = phonon.plot_band_structure_and_dos(
|
||||
pdos_indices=pdos_indices,
|
||||
symbols=settings.get_band_labels())
|
||||
else:
|
||||
plot = phonon.plot_band_structure_and_dos(
|
||||
symbols=settings.get_band_labels())
|
||||
if options.is_graph_save:
|
||||
plot.savefig('band_dos.pdf')
|
||||
else:
|
||||
plot.show()
|
||||
if options.is_graph_save:
|
||||
plot.savefig('band_dos.pdf')
|
||||
else:
|
||||
plot.show()
|
||||
|
||||
|
||||
# Animation
|
||||
|
|
Loading…
Reference in New Issue