本文整理汇总了Python中statsmodels.compat.python.iterkeys函数的典型用法代码示例。如果您正苦于以下问题:Python iterkeys函数的具体用法?Python iterkeys怎么用?Python iterkeys使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了iterkeys函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: getrlm
def getrlm(self):
self.k2 = self.results['k2']
if isinstance(self.results['w'], dict):
tmp = np.zeros((len(list(iterkeys(self.results['w'])))))
for i in iterkeys(self.results['w']):
tmp[int(i)-1] = self.results['w'][i]
self.weights = tmp
else: self.weights = self.results['w']
self.stddev = self.rsum['stddev'] # Don't know what this is yet
self.wresid = None # these equal resids always?
开发者ID:0ceangypsy,项目名称:statsmodels,代码行数:10,代码来源:rmodelwrap.py
示例2: test_pickle_wrapper
def test_pickle_wrapper(self):
fh = BytesIO() # use cPickle with binary content
# test unwrapped results load save pickle
self.results._results.save(fh)
fh.seek(0, 0)
res_unpickled = self.results._results.__class__.load(fh)
assert_(type(res_unpickled) is type(self.results._results))
# test wrapped results load save
fh.seek(0, 0)
self.results.save(fh)
fh.seek(0, 0)
res_unpickled = self.results.__class__.load(fh)
fh.close()
# print type(res_unpickled)
assert_(type(res_unpickled) is type(self.results))
before = sorted(iterkeys(self.results.__dict__))
after = sorted(iterkeys(res_unpickled.__dict__))
assert_(before == after, msg='not equal %r and %r' % (before, after))
before = sorted(iterkeys(self.results._results.__dict__))
after = sorted(iterkeys(res_unpickled._results.__dict__))
assert_(before == after, msg='not equal %r and %r' % (before, after))
before = sorted(iterkeys(self.results.model.__dict__))
after = sorted(iterkeys(res_unpickled.model.__dict__))
assert_(before == after, msg='not equal %r and %r' % (before, after))
before = sorted(iterkeys(self.results._cache))
after = sorted(iterkeys(res_unpickled._cache))
assert_(before == after, msg='not equal %r and %r' % (before, after))
开发者ID:5267,项目名称:statsmodels,代码行数:34,代码来源:test_shrink_pickle.py
示例3: information
def information(self, b, ties='breslow'):
info = 0 #np.zeros((len(b),len(b))) #0
score = 0
for t in iterkeys(self.failures):
fail = self.failures[t]
d = len(fail)
risk = self.risk[t]
Z = self.design[t]
if ties == 'breslow':
w = np.exp(np.dot(Z, b))
rv = Discrete(Z[risk], w=w[risk])
info += rv.cov()
elif ties == 'efron':
w = np.exp(np.dot(Z, b))
score += Z[fail].sum()
for j in range(d):
efron_w = w
efron_w[fail] -= i * w[fail] / d
rv = Discrete(Z[risk], w=efron_w[risk])
info += rv.cov()
elif ties == 'cox':
raise NotImplementedError('Cox tie breaking method not \
implemented')
else:
raise NotImplementedError('tie breaking method not recognized')
return score
开发者ID:0ceangypsy,项目名称:statsmodels,代码行数:28,代码来源:cox.py
示例4: score
def score(self, b, ties='breslow'):
score = 0
for t in iterkeys(self.failures):
fail = self.failures[t]
d = len(fail)
risk = self.risk[t]
Z = self.design[t]
score += Z[fail].sum()
if ties == 'breslow':
w = np.exp(np.dot(Z, b))
rv = Discrete(Z[risk], w=w[risk])
score -= rv.mean() * d
elif ties == 'efron':
w = np.exp(np.dot(Z, b))
score += Z[fail].sum()
for j in range(d):
efron_w = w
efron_w[fail] -= i * w[fail] / float(d)
rv = Discrete(Z[risk], w=efron_w[risk])
score -= rv.mean()
elif ties == 'cox':
raise NotImplementedError('Cox tie breaking method not \
implemented')
else:
raise NotImplementedError('tie breaking method not recognized')
return np.array([score])
开发者ID:0ceangypsy,项目名称:statsmodels,代码行数:29,代码来源:cox.py
示例5: loglike
def loglike(self, b, ties='breslow'):
logL = 0
for t in iterkeys(self.failures):
fail = self.failures[t]
d = len(fail)
risk = self.risk[t]
Zb = np.dot(self.design[t], b)
logL += Zb[fail].sum()
if ties == 'breslow':
s = np.exp(Zb[risk]).sum()
logL -= np.log(np.exp(Zb[risk]).sum()) * d
elif ties == 'efron':
s = np.exp(Zb[risk]).sum()
r = np.exp(Zb[fail]).sum()
for j in range(d):
logL -= np.log(s - j * r / d)
elif ties == 'cox':
raise NotImplementedError('Cox tie breaking method not \
implemented')
else:
raise NotImplementedError('tie breaking method not recognized')
return logL
开发者ID:0ceangypsy,项目名称:statsmodels,代码行数:25,代码来源:cox.py
示例6: cache
def cache(self):
if self.time_dependent:
self.cachedir = tempfile.mkdtemp()
self.design = {}
self.risk = {}
first = True
for t in iterkeys(self.failures):
if self.time_dependent:
d = np.array([s(self.formula, time=t)
for s in self.subjects]).astype(float)[:,None]
dshape = d.shape
dfile = file(tempfile.mkstemp(dir=self.cachedir)[1], 'w')
d.tofile(dfile)
dfile.close()
del(d)
self.design[t] = np.memmap(dfile.name,
dtype=np.dtype(float),
shape=dshape)
elif first:
d = np.array([s(self.formula, time=t)
for s in self.subjects]).astype(np.float64)
self.design[t] = d
else:
self.design[t] = d
self.risk[t] = np.compress([s.atrisk(t) for s in self.subjects],
np.arange(self.design[t].shape[0]),axis=-1)
开发者ID:0ceangypsy,项目名称:statsmodels,代码行数:28,代码来源:cox.py
示例7: add_dict
def add_dict(self, d, ncols=2, align='l', float_format="%.4f"):
'''Add the contents of a Dict to summary table
Parameters
----------
d : dict
Keys and values are automatically coerced to strings with str().
Users are encouraged to format them before using add_dict.
ncols: int
Number of columns of the output table
align : string
Data alignment (l/c/r)
'''
keys = [_formatter(x, float_format) for x in iterkeys(d)]
vals = [_formatter(x, float_format) for x in itervalues(d)]
data = np.array(lzip(keys, vals))
if data.shape[0] % ncols != 0:
pad = ncols - (data.shape[0] % ncols)
data = np.vstack([data, np.array(pad * [['', '']])])
data = np.split(data, ncols)
data = reduce(lambda x, y: np.hstack([x, y]), data)
self.add_array(data, align=align)
开发者ID:cong1989,项目名称:statsmodels,代码行数:25,代码来源:summary2.py
示例8: test_recursive_split
def test_recursive_split():
keys = list(product('mf'))
data = OrderedDict(zip(keys, [1] * len(keys)))
res = _hierarchical_split(data, gap=0)
assert_(list(iterkeys(res)) == keys)
res[('m',)] = (0.0, 0.0, 0.5, 1.0)
res[('f',)] = (0.5, 0.0, 0.5, 1.0)
keys = list(product('mf', 'yao'))
data = OrderedDict(zip(keys, [1] * len(keys)))
res = _hierarchical_split(data, gap=0)
assert_(list(iterkeys(res)) == keys)
res[('m', 'y')] = (0.0, 0.0, 0.5, 1 / 3)
res[('m', 'a')] = (0.0, 1 / 3, 0.5, 1 / 3)
res[('m', 'o')] = (0.0, 2 / 3, 0.5, 1 / 3)
res[('f', 'y')] = (0.5, 0.0, 0.5, 1 / 3)
res[('f', 'a')] = (0.5, 1 / 3, 0.5, 1 / 3)
res[('f', 'o')] = (0.5, 2 / 3, 0.5, 1 / 3)
开发者ID:cong1989,项目名称:statsmodels,代码行数:17,代码来源:test_mosaicplot.py
示例9: test__key_splitting
def test__key_splitting():
# subdivide starting with an empty tuple
base_rect = {tuple(): (0, 0, 1, 1)}
res = _key_splitting(base_rect, ['a', 'b'], [1, 1], tuple(), True, 0)
assert_(list(iterkeys(res)) == [('a',), ('b',)])
eq(res[('a',)], (0, 0, 0.5, 1))
eq(res[('b',)], (0.5, 0, 0.5, 1))
# subdivide a in two sublevel
res_bis = _key_splitting(res, ['c', 'd'], [1, 1], ('a',), False, 0)
assert_(list(iterkeys(res_bis)) == [('a', 'c'), ('a', 'd'), ('b',)])
eq(res_bis[('a', 'c')], (0.0, 0.0, 0.5, 0.5))
eq(res_bis[('a', 'd')], (0.0, 0.5, 0.5, 0.5))
eq(res_bis[('b',)], (0.5, 0, 0.5, 1))
# starting with a non empty tuple and uneven distribution
base_rect = {('total',): (0, 0, 1, 1)}
res = _key_splitting(base_rect, ['a', 'b'], [1, 2], ('total',), True, 0)
assert_(list(iterkeys(res)) == [('total',) + (e,) for e in ['a', 'b']])
eq(res[('total', 'a')], (0, 0, 1 / 3, 1))
eq(res[('total', 'b')], (1 / 3, 0, 2 / 3, 1))
开发者ID:cong1989,项目名称:statsmodels,代码行数:19,代码来源:test_mosaicplot.py
示例10: handle_formula_data
def handle_formula_data(Y, X, formula, depth=0, missing='drop'):
"""
Returns endog, exog, and the model specification from arrays and formula
Parameters
----------
Y : array-like
Either endog (the LHS) of a model specification or all of the data.
Y must define __getitem__ for now.
X : array-like
Either exog or None. If all the data for the formula is provided in
Y then you must explicitly set X to None.
formula : str or patsy.model_desc
You can pass a handler by import formula_handler and adding a
key-value pair where the key is the formula object class and
the value is a function that returns endog, exog, formula object
Returns
-------
endog : array-like
Should preserve the input type of Y,X
exog : array-like
Should preserve the input type of Y,X. Could be None.
"""
# half ass attempt to handle other formula objects
if isinstance(formula, tuple(iterkeys(formula_handler))):
return formula_handler[type(formula)]
na_action = NAAction(on_NA=missing)
if X is not None:
if data_util._is_using_pandas(Y, X):
result = dmatrices(formula, (Y, X), depth,
return_type='dataframe', NA_action=na_action)
else:
result = dmatrices(formula, (Y, X), depth,
return_type='dataframe', NA_action=na_action)
else:
if data_util._is_using_pandas(Y, None):
result = dmatrices(formula, Y, depth, return_type='dataframe',
NA_action=na_action)
else:
result = dmatrices(formula, Y, depth, return_type='dataframe',
NA_action=na_action)
# if missing == 'raise' there's not missing_mask
missing_mask = getattr(na_action, 'missing_mask', None)
if not np.any(missing_mask):
missing_mask = None
if len(result) > 1: # have RHS design
design_info = result[1].design_info # detach it from DataFrame
else:
design_info = None
# NOTE: is there ever a case where we'd need LHS design_info?
return result, missing_mask, design_info
开发者ID:bashtage,项目名称:statsmodels,代码行数:55,代码来源:formulatools.py
示例11: interactions
def interactions(terms, order=[1,2]):
"""
Output all pairwise interactions of given order of a
sequence of terms.
The argument order is a sequence specifying which order
of interactions should be generated -- the default
creates main effects and two-way interactions. If order
is an integer, it is changed to range(1,order+1), so
order=3 is equivalent to order=[1,2,3], generating
all one, two and three-way interactions.
If any entry of order is greater than len(terms), it is
effectively treated as len(terms).
>>> print interactions([Term(l) for l in ['a', 'b', 'c']])
<formula: a*b + a*c + b*c + a + b + c>
>>>
>>> print interactions([Term(l) for l in ['a', 'b', 'c']], order=list(range(5)))
<formula: a*b + a*b*c + a*c + b*c + a + b + c>
>>>
"""
l = len(terms)
values = {}
if np.asarray(order).shape == ():
order = lrange(1, int(order)+1)
# First order
for o in order:
I = np.indices((l,)*(o))
I.shape = (I.shape[0], np.product(I.shape[1:]))
for m in range(I.shape[1]):
# only keep combinations that have unique entries
if (np.unique(I[:,m]).shape == I[:,m].shape and
np.alltrue(np.equal(np.sort(I[:,m]), I[:,m]))):
ll = [terms[j] for j in I[:,m]]
v = ll[0]
for ii in range(len(ll)-1):
v *= ll[ii+1]
values[tuple(I[:,m])] = v
key = list(iterkeys(values))[0]
value = values[key]
del(values[key])
for v in itervalues(values):
value += v
return value
开发者ID:statsmodels,项目名称:statsmodels,代码行数:54,代码来源:formula.py
示例12: getglm
def getglm(self):
self.deviance = self.rsum['deviance']
self.resid = [self.results['residuals'][str(k)] \
for k in range(1, 1+self.nobs)]
if isinstance(self.resid, dict):
tmp = np.zeros(len(self.resid))
for i in iterkeys(self.resid):
tmp[int(i)-1] = self.resid[i]
self.resid = tmp
self.predict = [self.results['linear.predictors'][str(k)] \
for k in range(1, 1+self.nobs)]
self.fittedvalues = [self.results['fitted.values'][str(k)] \
for k in range(1, 1+self.nobs)]
self.weights = [self.results['weights'][str(k)] \
for k in range(1, 1+self.nobs)]
self.resid_deviance = self.rsum['deviance.resid']
if isinstance(self.resid_deviance, dict):
tmp = np.zeros(len(self.resid_deviance))
for i in iterkeys(self.resid_deviance):
tmp[int(i)-1] = self.resid_deviance[i]
self.resid_deviance = tmp
self.null_deviance = self.rsum['null.deviance']
开发者ID:0ceangypsy,项目名称:statsmodels,代码行数:22,代码来源:rmodelwrap.py
示例13: observed_crude_oddsratio
def observed_crude_oddsratio(self):
"""The crude odds ratio is obtained by pooling all data
corresponding to a given pair of cut points (c,c'), then
forming the inverse variance weighted average of these odds
ratios to obtain a single OR. Since the covariate effects are
ignored, this OR will generally be greater than the stratified
OR.
"""
cpp = self.cpp
endog = self.model.endog_li
# Storage for the contingency tables for each (c,c')
tables = {}
for ii in iterkeys(cpp[0]):
tables[ii] = np.zeros((2, 2), dtype=np.float64)
# Get the observed crude OR
for i in range(len(endog)):
if len(endog[i]) == 0:
continue
# The observed joint values for the current cluster
yvec = endog[i]
endog_11 = np.outer(yvec, yvec)
endog_10 = np.outer(yvec, 1 - yvec)
endog_01 = np.outer(1 - yvec, yvec)
endog_00 = np.outer(1 - yvec, 1 - yvec)
cpp1 = cpp[i]
for ky in iterkeys(cpp1):
ix = cpp1[ky]
tables[ky][1, 1] += endog_11[ix[:, 0], ix[:, 1]].sum()
tables[ky][1, 0] += endog_10[ix[:, 0], ix[:, 1]].sum()
tables[ky][0, 1] += endog_01[ix[:, 0], ix[:, 1]].sum()
tables[ky][0, 0] += endog_00[ix[:, 0], ix[:, 1]].sum()
return self.pooled_odds_ratio(list(itervalues(tables)))
开发者ID:uscxiaoyu,项目名称:statsmodels,代码行数:39,代码来源:covstruct.py
示例14: initialize
def initialize(self, subjects):
print('called initialize')
self.failures = {}
for i in range(len(subjects)):
s = subjects[i]
if s.delta:
if s.time not in self.failures:
self.failures[s.time] = [i]
else:
self.failures[s.time].append(i)
self.failure_times = list(iterkeys(self.failures))
self.failure_times.sort()
开发者ID:0ceangypsy,项目名称:statsmodels,代码行数:13,代码来源:cox.py
示例15: verify
def verify(self):
'''load the saved module and verify the data
This tries several ways of comparing the saved and the attached data,
but might not work for all possible data structures.
Returns
-------
all_correct : bool
true if no differences are found, for floating point numbers
rtol=1e-16, atol=1e-16 is used to determine equality (allclose)
correctli : list
list of attribute names that compare as equal
incorrectli : list
list of attribute names that did not compare as equal, either
because they differ or because the comparison does not handle the
data structure correctly
'''
module = __import__(self._filename.replace('.py',''))
if not self._useinstance:
raise NotImplementedError('currently only implemented when'
'useinstance is true')
data = getattr(module, self.name)
correctli = []
incorrectli = []
for d in self._what:
self_item = getattr(data, d)
saved_item = getattr(data, d)
#print(d)
#try simple equality
correct = np.all(self.item == saved_item)
#try allclose
if not correct and not self.item.dtype == np.dtype('object'):
correct = np.allclose(self_item, saved_item,
rtol=1e-16, atol=1e-16)
if not correct:
import warnings
warnings.warn("inexact precision in "+d, RuntimeWarning)
#try iterating, if object array
if not correct:
correlem =[np.all(data[d].item()[k] ==
getattr(testsave.var_results, d).item()[k])
for k in iterkeys(data[d].item())]
if not correlem:
#print(d, "wrong")
incorrectli.append(d)
correctli.append(d)
return len(incorrectli)==0, correctli, incorrectli
开发者ID:ChadFulton,项目名称:statsmodels,代码行数:51,代码来源:dump2module.py
示例16: __init__
def __init__(self, sys, indep_endog=None, instruments=None):
if len(sys) % 2 != 0:
raise ValueError("sys must be a list of pairs of endogenous and \
exogenous variables. Got length %s" % len(sys))
M = len(sys[1::2])
self._M = M
# The lists are probably a bad idea
self.endog = sys[::2] # these are just list containers
self.exog = sys[1::2]
self._K = [np.linalg.matrix_rank(_) for _ in sys[1::2]]
# fullexog = np.column_stack((_ for _ in self.exog))
self.instruments = instruments
# Keep the Y_j's in a container to get IVs
instr_endog = {}
[instr_endog.setdefault(_,[]) for _ in iterkeys(indep_endog)]
for eq_key in indep_endog:
for varcol in indep_endog[eq_key]:
instr_endog[eq_key].append(self.exog[eq_key][:,varcol])
# ^ copy needed?
# self._instr_endog = instr_endog
self._indep_endog = indep_endog
_col_map = np.cumsum(np.hstack((0,self._K))) # starting col no.s
# move this check to whiten since we're not going to build a full exog?
for eq_key in indep_endog:
try:
iter(indep_endog[eq_key])
except:
# eq_key = [eq_key]
raise TypeError("The values of the indep_exog dict must be "
"iterable. Got type %s for converter %s"
% (type(indep_endog[eq_key]), eq_key))
# for del_col in indep_endog[eq_key]:
# fullexog = np.delete(fullexog, _col_map[eq_key]+del_col, 1)
# _col_map[eq_key+1:] -= 1
# Josef's example for deleting reoccuring "rows"
# fullexog = np.unique(fullexog.T.view([('',fullexog.dtype)]*\
# fullexog.shape[0])).view(fullexog.dtype).reshape(\
# fullexog.shape[0],-1)
# From http://article.gmane.org/gmane.comp.python.numeric.general/32276/
# Or Jouni' suggetsion of taking a hash:
# http://www.mail-archive.com/[email protected]/msg04209.html
# not clear to me how this would work though, only if they are the *same*
# elements?
# self.fullexog = fullexog
self.wexog = self.whiten(instr_endog)
开发者ID:statsmodels,项目名称:statsmodels,代码行数:50,代码来源:sysreg.py
示例17: test_all_to_tbl
def test_all_to_tbl(self):
from statsmodels.stats.libqsturng.make_tbls import T,R
ps, rs, vs, qs = [], [], [], []
for p in T:
for v in T[p]:
for r in iterkeys(R):
ps.append(p)
vs.append(v)
rs.append(r)
qs.append(T[p][v][R[r]])
qs = np.array(qs)
errors = np.abs(qs-qsturng(ps,rs,vs))/qs
assert_equal(np.array([]), np.where(errors > .03)[0])
开发者ID:ChadFulton,项目名称:statsmodels,代码行数:14,代码来源:test_qsturng.py
示例18: _normalize_data
def _normalize_data(data, index):
"""normalize the data to a dict with tuples of strings as keys
right now it works with:
0 - dictionary (or equivalent mappable)
1 - pandas.Series with simple or hierarchical indexes
2 - numpy.ndarrays
3 - everything that can be converted to a numpy array
4 - pandas.DataFrame (via the _normalize_dataframe function)
"""
# if data is a dataframe we need to take a completely new road
# before coming back here. Use the hasattr to avoid importing
# pandas explicitly
if hasattr(data, 'pivot') and hasattr(data, 'groupby'):
data = _normalize_dataframe(data, index)
index = None
# can it be used as a dictionary?
try:
items = list(iteritems(data))
except AttributeError:
# ok, I cannot use the data as a dictionary
# Try to convert it to a numpy array, or die trying
data = np.asarray(data)
temp = OrderedDict()
for idx in np.ndindex(data.shape):
name = tuple(i for i in idx)
temp[name] = data[idx]
data = temp
items = list(iteritems(data))
# make all the keys a tuple, even if simple numbers
data = OrderedDict([_tuplify(k), v] for k, v in items)
categories_levels = _categories_level(list(iterkeys(data)))
# fill the void in the counting dictionary
indexes = product(*categories_levels)
contingency = OrderedDict([(k, data.get(k, 0)) for k in indexes])
data = contingency
# reorder the keys order according to the one specified by the user
# or if the index is None convert it into a simple list
# right now it doesn't do any check, but can be modified in the future
index = lrange(len(categories_levels)) if index is None else index
contingency = OrderedDict()
for key, value in iteritems(data):
new_key = tuple(key[i] for i in index)
contingency[new_key] = value
data = contingency
return data
开发者ID:Inoryy,项目名称:statsmodels,代码行数:46,代码来源:mosaicplot.py
示例19: _recode
def _recode(x, levels):
""" Recode categorial data to int factor.
Parameters
----------
x : array-like
array like object supporting with numpy array methods of categorially
coded data.
levels : dict
mapping of labels to integer-codings
Returns
-------
out : instance numpy.ndarray
"""
from pandas import Series
name = None
index = None
if isinstance(x, Series):
name = x.name
index = x.index
x = x.values
if x.dtype.type not in [np.str_, np.object_]:
raise ValueError('This is not a categorial factor.'
' Array of str type required.')
elif not isinstance(levels, dict):
raise ValueError('This is not a valid value for levels.'
' Dict required.')
elif not (np.unique(x) == np.unique(list(iterkeys(levels)))).all():
raise ValueError('The levels do not match the array values.')
else:
out = np.empty(x.shape[0], dtype=np.int)
for level, coding in iteritems(levels):
out[x == level] = coding
if name:
out = Series(out, name=name, index=index)
return out
开发者ID:bashtage,项目名称:statsmodels,代码行数:45,代码来源:factorplots.py
示例20: _create_default_properties
def _create_default_properties(data):
""""Create the default properties of the mosaic given the data
first it will varies the color hue (first category) then the color
saturation (second category) and then the color value
(third category). If a fourth category is found, it will put
decoration on the rectangle. Doesn't manage more than four
level of categories
"""
categories_levels = _categories_level(list(iterkeys(data)))
Nlevels = len(categories_levels)
# first level, the hue
L = len(categories_levels[0])
# hue = np.linspace(1.0, 0.0, L+1)[:-1]
hue = np.linspace(0.0, 1.0, L + 2)[:-2]
# second level, the saturation
L = len(categories_levels[1]) if Nlevels > 1 else 1
saturation = np.linspace(0.5, 1.0, L + 1)[:-1]
# third level, the value
L = len(categories_levels[2]) if Nlevels > 2 else 1
value = np.linspace(0.5, 1.0, L + 1)[:-1]
# fourth level, the hatch
L = len(categories_levels[3]) if Nlevels > 3 else 1
hatch = ['', '/', '-', '|', '+'][:L + 1]
# convert in list and merge with the levels
hue = lzip(list(hue), categories_levels[0])
saturation = lzip(list(saturation),
categories_levels[1] if Nlevels > 1 else [''])
value = lzip(list(value),
categories_levels[2] if Nlevels > 2 else [''])
hatch = lzip(list(hatch),
categories_levels[3] if Nlevels > 3 else [''])
# create the properties dictionary
properties = {}
for h, s, v, t in product(hue, saturation, value, hatch):
hv, hn = h
sv, sn = s
vv, vn = v
tv, tn = t
level = (hn,) + ((sn,) if sn else tuple())
level = level + ((vn,) if vn else tuple())
level = level + ((tn,) if tn else tuple())
hsv = array([hv, sv, vv])
prop = {'color': _single_hsv_to_rgb(hsv), 'hatch': tv, 'lw': 0}
properties[level] = prop
return properties
开发者ID:Inoryy,项目名称:statsmodels,代码行数:45,代码来源:mosaicplot.py
注:本文中的statsmodels.compat.python.iterkeys函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论