문제

I'm making a big dendrogram using SciPy and in the resulting dendrogram the line thickness makes it hard to see detail. I want to decrease the line thickness to make it easier to see and more MatLab like. Any suggestions?

I'm doing:

import scipy.cluster.hierarchy as hicl
from pylab import savefig

distance = #distance matrix

links = hicl.linkage(distance,method='average')
pden = hicl.dendrogram(links,color_threshold=optcutoff[0], ...
       count_sort=True,no_labels=True)
savefig('foo.pdf')

And getting a result like this.

도움이 되었습니까?

해결책 2

Set the default linewidth before calling dendrogram. For example:

import scipy.cluster.hierarchy as hicl
from pylab import savefig
import matplotlib


# Override the default linewidth.
matplotlib.rcParams['lines.linewidth'] = 0.5

distance = #distance matrix

links = hicl.linkage(distance,method='average')
pden = hicl.dendrogram(links,color_threshold=optcutoff[0], ...
       count_sort=True,no_labels=True)
savefig('foo.pdf')

See Customizing matplotlib for more information.

다른 팁

Matplotlib has a context manager now, which allows you to only override the default values temporarily, for that one plot:

import matplotlib.pyplot as plt
from scipy.cluster import hierarchy

distance = #distance matrix
links = hierarchy.linkage(distance, method='average')

# Temporarily override the default line width:
with plt.rc_context({'lines.linewidth': 0.5}):
    pden = hierarchy.dendrogram(links, color_threshold=optcutoff[0], ...
                                count_sort=True, no_labels=True)
# linewidth is back to its default here...!
plt.savefig('foo.pdf')

See the Matplotlib configuration API for more details.

set dendrogram on existing axes than change its artists using setp. It allow changing all parameters, that won't work if dendrogram is sent to axes or won't work with dendrogram at all like linestyle.

import matplotlib.pyplot as plt
import scipy.cluster.hierarchy as hicl
links = #linkage

fig,ax = plt.subplots()
hicl.dendrogram(links,ax=ax)
plt.setp(ax.collections,linewidth=3,linestyle=":", ...other line parameters...)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top