def _get_font(self): from matplotlib.font_manager import FontManager from PIL import ImageFont font_finder = FontManager() font_path = font_finder.findfont("arial") return ImageFont.truetype(font_path, 35)
def get_matplot_zh_font(): fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True) zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n')) available = list(mat_fonts & zh_fonts) return available
def build_matplotlib_font_cache(): """This is to mitigate errors on CI VMs, where you can get the message: "Matplotlib is building the font cache" in output notebooks """ from matplotlib.font_manager import FontManager FontManager()
def _plot(self, a, key, title, gx, gy, num_x, num_y): logger.debug('Plotting: %s', key) pp.rcParams['figure.figsize'] = (self._image_width / 300, self._image_height / 300) pp.title(title) # Interpolate the data rbf = Rbf(a['x'], a['y'], a[key], function='linear') z = rbf(gx, gy) z = z.reshape((num_y, num_x)) # Render the interpolated data to the plot pp.axis('off') # begin color mapping if 'min' in self.thresholds.get(key, {}): vmin = self.thresholds[key]['min'] logger.debug('Using min threshold from thresholds: %s', vmin) else: vmin = min(a[key]) logger.debug('Using calculated min threshold: %s', vmin) if 'max' in self.thresholds.get(key, {}): vmax = self.thresholds[key]['max'] logger.debug('Using max threshold from thresholds: %s', vmax) else: vmax = max(a[key]) logger.debug('Using calculated max threshold: %s', vmax) norm = matplotlib.colors.Normalize(vmin=vmin, vmax=vmax, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap='RdYlBu_r') # end color mapping image = pp.imshow(z, extent=(0, self._image_width, self._image_height, 0), cmap='RdYlBu_r', alpha=0.5, zorder=100, vmin=vmin, vmax=vmax) pp.colorbar(image) pp.imshow(self._layout, interpolation='bicubic', zorder=1, alpha=1) labelsize = FontManager.get_default_size() * 0.4 # begin plotting points for idx in range(0, len(a['x'])): if (a['x'][idx], a['y'][idx]) in self._corners: continue pp.plot(a['x'][idx], a['y'][idx], marker='o', markeredgecolor='black', markeredgewidth=1, markerfacecolor=mapper.to_rgba(a[key][idx]), markersize=6) pp.text(a['x'][idx], a['y'][idx] - 30, a['ap'][idx], fontsize=labelsize, horizontalalignment='center') # end plotting points fname = '%s_%s.png' % (key, self._title) logger.info('Writing plot to: %s', fname) pp.savefig(fname, dpi=300) pp.close('all')
def try_load_font_mpl(name): try: from matplotlib.font_manager import FontManager except ImportError: return fm = FontManager() suggestions={} for style in [BOLD, LIGHT, LIGHT_ITALIC, ITALIC, ITALIC_BOLD, NORMAL]: with warnings.catch_warnings(): warnings.filterwarnings("ignore") suggestion = fm.findfont("{0}:{1}".format(name, style.lower()), fallback_to_default=True) if get_font_family(suggestion) != name: continue else: add_font_directory(os.path.dirname(suggestion)) suggestions[style] = suggestion load_ttf_font(name, {style: os.path.splitext(os.path.basename(suggestion))[0] for style, suggestion in suggestions.items()})
def get_matplot_zh_font(): # From https://blog.csdn.net/kesalin/article/details/71214038 fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) output = subprocess.check_output('fc-list :lang=zh-tw -f "%{family}\n"', shell=True) zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n')) available = list(mat_fonts & zh_fonts) return available
def get_zh_fonts(): """获取可用的中文字体""" font_manger = FontManager() mat_fonts = set(f.name for f in font_manger.ttflist) # print(mat_fonts) output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True) # print(output) zh_fonts = set(f.split(',', 1)[0] for f in output.decode('utf-8').split('\n')) available = mat_fonts & zh_fonts # print('*' * 10, '可用的字体', '*' * 10) for f in available: print(f)
def _draw_mol_at( self, mol, center_x, center_y, mol_size=None, act_dict={}, center=False, **kwargs, ): img = mol if mol_size is None: mol_size = self.mol_size if isinstance(mol, Chem.Mol): img = Draw.MolToImage(mol, mol_size, kekulize=True, fitImage=True, **kwargs) width, height = img.size self.image.paste( img, (int(center_x - width / 2), int(center_y - height / 2))) txt = [] for prop, propval in act_dict.items(): if not isinstance(propval, str): propval = "{:.2f}".format(propval) txt.append(f"{prop}: {propval}") if txt and self.draw is not None: txt = "\n".join(txt) font = None w, h = self.draw.multiline_textsize(txt) try: fn = FontManager() fontpath = fn.findfont("Droid sans") font = ImageFont.truetype(fontpath, 18 + center * 8) w, h = self.draw.multiline_textsize(txt, font=font) except: passcircle_mols
def get_matplot_zh_font(): fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True) output_list = output.decode().split('\n') zh_fonts = set(f.split(',', 1)[0] for f in output_list) available = list(mat_fonts & zh_fonts) print('*' * 10, '可用的字体', '*' * 10) for f in available: print(f) return available
def get_matplot_zh_font(): fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) print(mat_fonts) output = str(subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True)) zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n')) print(zh_fonts) available = list(mat_fonts & zh_fonts) # print('*' * 10, '可用的字体', '*' * 10) for f in available: print(f) available_font = [output.split('\n')[0].split(',', 1)[0]] print("available_font:" + str(available_font)) return available_font
def _draw(self): """Create circles and slices in-memory""" draw = ImageDraw.Draw(self.image) self.draw = draw all_radius = self._draw_circles(draw) self._draw_center_mol() self._draw_ring_mols(all_radius) font = None w, h = draw.textsize(self.legend) try: fn = FontManager() fontpath = fn.findfont("Droid sans") font = ImageFont.truetype(fontpath, 12 * self.size // 800) w, h = font.getsize(self.legend) except: pass draw.text( ((self.size // 2 - w) - 2, self.size - 2 * h), self.legend, fill="black", font=font, ) del draw self.draw = None
def add_system_fonts() -> None: try: from matplotlib.font_manager import FontManager except ImportError: logger.debug('This function requires the optional matplotlib package.') return for entry in FontManager().ttflist: ttf = db_key(entry.fname) fonts[ttf] = Font( ttf, entry.name, entry.style, entry.stretch, entry.weight, )
def supported_chinese_font(): fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True) # print '*' * 10, '系统可用的中文字体', '*' * 10 # print output zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n')) available = mat_fonts & zh_fonts print '*' * 10, '可用的中文字体', '*' * 10 for f in available: print f return available
def plot_similarity(labels, features, rotation): """ sentence vector evaluation :param labels: list of sentences :param features: matrix composed by sentence vectors :param rotation: generally 90 :return: """ plt.rcParams['font.sans-serif'] = ['SimHei'] # plt.rcParams['font.serif'] = ['SimHei'] # plt.rcParams['axes.unicode_minus'] = False print('matplotlib directory:', mpl.matplotlib_fname()) # SimHei.ttf should be in # /home/deco/miniconda2/envs/tf17/lib/python3.6/site-packages/matplotlib/ # mpl-data/fonts/ttf fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True) # print('Type of output:', type(output)) output = output.decode('utf-8') # print('*' * 10, '系统可用的中文字体', '*' * 10) # print(output) zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n')) available = mat_fonts & zh_fonts print('*' * 10, '可用的字体', '*' * 10) for f in available: print(f) corr = np.inner(features, features) # features是多个sentence embeddings组成的矩阵,上面这个内积操作就算出了sentence两两之间的相似度 # np.inner(u, v) == u*transpose(v) sns.set(font_scale=1.2) sns.set_style("darkgrid", {"font.sans-serif": ['simhei', 'Arial']}) # the code above must be after sns.set() g = sns.heatmap( corr, xticklabels=labels, yticklabels=labels, vmin=0, # 如果值小于0,就按0处理,也就是所谓的语境相反会被当做不相关处理 vmax=1, cmap="YlOrRd") g.set_xticklabels(labels, rotation=rotation) # 把labels字体进行旋转 g.set_title("Semantic Textual Similarity") plt.show()
def load_system_fonts() -> Dict[str, fonts.FontFace]: """ Load system fonts by the FontManager of matplotlib. This may take a long time! """ font_faces = dict() for entry in FontManager().ttflist: ttf = fonts.cache_key(entry.fname) font_faces[ttf] = fonts.FontFace( ttf, entry.name, entry.style, entry.stretch, entry.weight, ) return font_faces
def getavailablezhfont(): """ 获取系统中安装的中文字体列表 """ fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True).decode('utf-8') # print '*' * 10, '系统可用的中文字体', '*' * 10 # print output zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n')) available = mat_fonts & zh_fonts print('*' * 10, '可用的字体', '*' * 10) for f in available: print(f'{f}')
def get_matplot_zh_font(): fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True) fonts = output.decode() fontArr = fonts.split('\n') zh_fonts = set(f.split(',', 1)[0] for f in fontArr) # zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n')) available = list(mat_fonts & zh_fonts) # remove .xxxx available = [i for i in available if not i.startswith('.')] print('*' * 10, '可用的字体', '*' * 10) for f in available: print(f) return available
def test(): # judge the availabe chinese fonts from matplotlib.font_manager import FontManager import subprocess fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) output = subprocess.check_output( 'fc-list :lang=zh -f "%{family}\n"', shell=True) # print '*' * 10, '系统可用的中文字体', '*' * 10 print output zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n')) available = mat_fonts & zh_fonts print '*' * 10, '可用的字体', '*' * 10 for f in available: print f
def dispFonts(): #显示可用的中文字体,同时支持英文的 from matplotlib.font_manager import FontManager import subprocess fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True) output = output.decode('utf-8') # print '*' * 10, '系统可用的中文字体', '*' * 10 # print output zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n')) available = mat_fonts & zh_fonts print '*' * 10 + u'可用的中文字体' + '*' * 10 for f in available: print(f)
#显示可用的中文字体,同时支持英文的 from matplotlib.font_manager import FontManager import subprocess fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True) output = output.decode('utf-8') # print ‘*‘ * 10, ‘系统可用的中文字体‘, ‘*‘ * 10 # print output zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n')) available = mat_fonts & zh_fonts print('*' * 10 + u'可用的中文字体' + '*' * 10) for f in available: print(f)
def reset_font_manager() -> None: global _font_manager _font_manager = FontManager()
def plot2(regex=re.compile(pattern='-*\d+\.\d+')): """ lr对ddpg收敛性的影响 :return: """ ddpg_lr1 = None with open(file= r'/Users/songyunlong/Desktop/实验室/时延模型ddpg/ddpg_file/ddpg200.txt', mode='r') as f: #lr=1e-3 while True: line_str = f.readline() if not line_str: break line_array = np.array([float(i) for i in line_str.split(' ')]) ddpg_lr1 = line_array if ddpg_lr1 is None else np.vstack( (ddpg_lr1, line_array)) ddpg_lr2 = None with open( file= r'/Users/songyunlong/Desktop/实验室/时延模型ddpg/ddpg_file/ddpg200-1e-2.txt', mode='r') as f: #lr=1e-2 while True: line_str = f.readline() if not line_str: break generator = regex.finditer(string=line_str) line_array = np.array([float(i.group(0)) for i in generator]) ddpg_lr2 = line_array if ddpg_lr2 is None else np.vstack( (ddpg_lr2, line_array)) ddpg_lr3 = None with open( file= r'/Users/songyunlong/Desktop/实验室/时延模型ddpg/ddpg_file/ddpg200-5e-3.txt', mode='r') as f: # lr=5e-3 while True: line_str = f.readline() if not line_str: break generator = regex.finditer(string=line_str) line_array = np.array([float(i.group(0)) for i in generator]) ddpg_lr3 = line_array if ddpg_lr3 is None else np.vstack( (ddpg_lr3, line_array)) from matplotlib.font_manager import FontManager fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) # print (mat_fonts) # plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] #reward # fig, ax = plt.subplots(ncols=1, nrows=2) # # x = range(1, 101) # ax[0].plot(x_spline_new, kesi(spline(x, ddpg_lr1[:, 0]*100)(x_spline_new),1), c='r', linestyle='-', label='Lr=1e-3') # ax[0].plot(x_spline_new, kesi(spline(x, ddpg_lr2[:, 0]*100)(x_spline_new),1), c='g', linestyle='--', label='Lr=1e-2') # ax[0].plot(x_spline_new, kesi(spline(x, ddpg_lr3[:, 0]*100)(x_spline_new),1), c='b', linestyle=':', label='Lr=5e-3') # ax[0].legend() # # ax[0].set_xlabel('Training epochs') # ax[0].set_xlabel(u'迭代训练次数', fontproperties='Noto Sans Vai') # # ax[0].set_ylabel('Reward') # ax[0].set_ylabel(u'奖励值', fontproperties='Noto Sans Vai') # ax[0].grid(axis='x', linestyle='-.') # ax[0].grid(axis='y', linestyle='-.') # ax[0].set_title('(a)The total reward value per episode', y=-0.5) # # fig.show() # # #latency # # fig, ax = plt.subplots() # x = range(1, 101) # ax[1].plot(x_spline_new, kesi(spline(x, ddpg_lr1[:, -1])(x_spline_new),2), c='r', linestyle='-', label='Lr=1e-3') # ax[1].plot(x_spline_new, kesi(spline(x, ddpg_lr2[:, -1])(x_spline_new),2), c='g', linestyle='--', label='Lr=1e-2') # ax[1].plot(x_spline_new, kesi(spline(x, ddpg_lr3[:, -1])(x_spline_new),2), c='b', linestyle=':', label='Lr=5e-3') # ax[1].legend() # ax[1].set_xlabel('Training epochs') # ax[1].set_ylabel('Average latency/s') # ax[1].grid(axis='x', linestyle='-.') # ax[1].grid(axis='y', linestyle='-.') # ax[1].set_title('(b)The average latency per episode', y=-0.5) # fig.show() #专利绘图 plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] plt.title('搜狗') x = range(1, 101) # plt.plot(x_spline_new, kesi(spline(x, ddpg_lr1[:, 0] * 100)(x_spline_new), 1), c='r', linestyle='-', # label='Lr=1e-3') # plt.plot(x_spline_new, kesi(spline(x, ddpg_lr2[:, 0] * 100)(x_spline_new), 1), c='g', linestyle='--', # label='Lr=1e-2') # plt.plot(x_spline_new, kesi(spline(x, ddpg_lr3[:, 0] * 100)(x_spline_new), 1), c='b', linestyle=':', # label='Lr=5e-3') # plt.legend() # # ax[0].set_xlabel('Training epochs') # plt.xlabel(u'迭代训练次数', size=9) # # ax[0].set_ylabel('Reward') # plt.ylabel(u'奖励值') # plt.grid(axis='x', linestyle='-.') # plt.grid(axis='y', linestyle='-.') # plt.title('(a)每条采样链的总奖励值', y=-0.16, size=10) # plt.show() # plt.plot(x_spline_new, kesi(spline(x, ddpg_lr1[:, -1] * 100)(x_spline_new), 1), c='r', linestyle='-', # label='Lr=1e-3') # plt.plot(x_spline_new, kesi(spline(x, ddpg_lr2[:, -1] * 100)(x_spline_new), 1), c='g', linestyle='--', # label='Lr=1e-2') # plt.plot(x_spline_new, kesi(spline(x, ddpg_lr3[:, -1] * 100)(x_spline_new), 1), c='b', linestyle=':', # label='Lr=5e-3') plt.plot(x_spline_new, kesi(spline(x, ddpg_lr1[:, -1])(x_spline_new), 2), c='r', linestyle='-', label='Lr=1e-3') plt.plot(x_spline_new, kesi(spline(x, ddpg_lr2[:, -1])(x_spline_new), 2), c='g', linestyle='--', label='Lr=1e-2') plt.plot(x_spline_new, kesi(spline(x, ddpg_lr3[:, -1])(x_spline_new), 2), c='b', linestyle=':', label='Lr=5e-3') plt.legend() # ax[0].set_xlabel('Training epochs') plt.xlabel(u'迭代训练次数', size=9) # ax[0].set_ylabel('Reward') plt.ylabel(u'平均时延') plt.grid(axis='x', linestyle='-.') plt.grid(axis='y', linestyle='-.') plt.title('(b)每条采样链的平均时延', y=-0.16, size=10) plt.show()
def _get_font_manager(): global _font_manager if _font_manager is None: _font_manager = FontManager() return _font_manager
def rebuild_system_fonts(): import matplotlib.font_manager matplotlib.font_manager._rebuild() global _font_manager _font_manager = FontManager()
from matplotlib.font_manager import FontManager import subprocess mpl_fonts = set(f.name for f in FontManager().ttflist) print('all font list get from matplotlib.font_manager:') for f in sorted(mpl_fonts): print('\t' + f)
def main(): if len(sys.argv)!=4: print (str(len(sys.argv))) else: for i in range(len(sys.argv)): print sys.argv[i] print("read triggers list") triggers_input=open(sys.argv[1],"r") for line in triggers_input: if line.count("\t")<6: print(str(line.count("\t"))) continue else: tokens=line.strip().split("\t") print(tokens[4]+":"+tokens[3]) begin_index=tokens[3].strip().split(",")[0] print("begin index is"+begin_index) trigger=[] trigger.append(tokens[4]) trigger.append(begin_index) triggers_list.append(trigger) print("length of triggers list is "+str(len(triggers_list))) print("read arguments list") arguments_input=open(sys.argv[2],"r") for line in arguments_input: if line.count("\t")<11: print(str(line.count("\t"))) continue else: tokens=line.strip().split("\t") tokens[4]=tokens[4].replace(',','').replace(',','') tokens[4]=tokens[4].replace('。','').replace('.','') tokens[4]=tokens[4].replace('[','').replace(']','') tokens[4]=tokens[4].replace(';','').replace(';','') tokens[4]=tokens[4].replace('《','').replace('》','') tokens[4]=tokens[4].replace('¥','').replace('$','') tokens[4]=tokens[4].replace('、','').replace('\\','') tokens[4]=tokens[4].strip() print(tokens[4]+":"+tokens[11]) argument=[] argument.append(tokens[4]) argument.append(tokens[11]) arguments_list.append(argument) print("length of arguments list is "+str(len(arguments_list))) print("generate event") for i in range(len(arguments_list)): if len(events_list)==0: for j in range(len(triggers_list)): if arguments_list[i][1]==triggers_list[j][1]: print("插入第一个事件") event=[] event.append(arguments_list[i]) event.append(triggers_list[j]) events_list.append(event) print("插入结果为:") print(arguments_list[i][0]+":"+arguments_list[i][1]) print(triggers_list[j][0]+":"+triggers_list[j][1]) print(events_list[0][0][0]+":"+events_list[0][0][1]) print(events_list[0][1][0]+":"+events_list[0][1][1]) break else: exist_state=False for k in range(len(events_list)): if arguments_list[i][1]==events_list[k][0][1]: events_list[k].append(arguments_list[i]) print("该事件已经存在于事件列表中,现向列表中添加事件元素") print("添加的事件元素为:"+arguments_list[i][0]+":"+arguments_list[i][1]) print("该事件为:") for l in range(len(events_list[k])): print(events_list[k][l][0]+":"+events_list[k][l][1]) exist_state=True break if not exist_state: for j in range(len(triggers_list)): if arguments_list[i][1]==triggers_list[j][1]: print("插入新的事件如下:") event=[] event.append(arguments_list[i]) event.append(triggers_list[j]) events_list.append(event) print("插入结果为:") print(arguments_list[i][0]+":"+arguments_list[i][1]) print(triggers_list[j][0]+":"+triggers_list[j][1]) print(events_list[len(events_list)-1][0][0]+":"+events_list[len(events_list)-1][0][1]) print(events_list[len(events_list)-1][1][0]+":"+events_list[len(events_list)-1][1][1]) print("事件提取完毕") print("\n生成词表") for i in range(len(events_list)): for j in range(len(events_list[i])): if len(words_list)==0: words_list.append(events_list[i][j][0]) print("向词表中添加第一个词,这个词是:"+words_list[0]) else: exist_state=False for k in range(len(words_list)): if events_list[i][j][0]==words_list[k]: print("词语("+events_list[i][j][0]+")已经存在,不需要重复加入,这个存在的词语是:"+words_list[k]) exist_state=True break if not exist_state: words_list.append(events_list[i][j][0]) print("将一个新词("+events_list[i][j][0]+")添加进词表中,这个词是:"+words_list[len(words_list)-1]) print("\n将事件触发词和事件元素替换为词典编码") for i in range(len(events_list)): event=[] for j in range(len(events_list[i])): for k in range(len(words_list)): if words_list[k]==events_list[i][j][0]: event.append(k) break events_code_list.append(event) for l in range(len(events_list[i])): print("词语("+events_list[i][l][0]+")替换为("+str(events_code_list[len(events_code_list)-1][l])+")") print("\n") print("\n生成联通图") #dg=digraph() dg=graph() nodes_list=range(len(words_list)) dg.add_nodes(nodes_list) print("将句子级的事件元素以及事件触发词串联起来") for i in range(len(events_code_list)): for j in range(len(events_code_list[i])): for k in range(len(events_code_list[i])): if not dg.has_edge((events_code_list[i][j],events_code_list[i][k])) and (j!=k): dg.add_edge((events_code_list[i][j],events_code_list[i][k])) print("事件"+str(i)+"中的("+words_list[events_code_list[i][j]]+")与("+words_list[events_code_list[i][k]]+")之间建立了一条边") print("\n显示可用字体") fm=FontManager() mat_fonts=set(f.name for f in fm.ttflist) output=subprocess.check_output('fc-list :lang=zh -f "%{family}\n"',shell=True) zh_fonts=set(f.split(',',1)[0] for f in output.split('\n')) available=mat_fonts print '*'*10,'可用的字体','*'*10 for f in available: print f print("read CHINESE_WORD2VEC_FILENAME") word2vec=open(sys.argv[3],"r") for line in word2vec: if line.count(" ")<5: continue else: index=line.find(" ") curWord=line[:index] rest=line[index+1:] tokens=rest.strip().split(" ") numTokens=[] for tok in tokens: numTokens.append(float(tok)) chineseWordVecs[curWord]=numTokens word2vec.close() print("load CHINESE_WORD2VEC_FILENAME successfully") print("\n提取单词的词向量") for i in range(len(events_code_list)): event_word2vec=[] for j in range(len(events_code_list[i])): event_word_word2vec=[] words=words_list[events_code_list[i][j]].split(" ") for l in range(len(words)): if chineseWordVecs.has_key(words[l]): #print("\n事件"+str(i)+"中的词语("+words[l]+")具有词向量") #print("该词向量为:"+str(chineseWordVecs[words[l]])) event_word_word2vec.append(chineseWordVecs[words[l]]) else: #print("\n事件"+str(i)+"中的词语("+words[l]+")不具有词向量") zero_list=[] for m in range(100): zero_list.append(0) event_word_word2vec.append(zero_list) event_word2vec.append(event_word_word2vec) events_word2vec_list.append(event_word2vec) #for i in range(len(events_code_list)): #for j in range(len(events_code_list[i])): #words=words_list[events_code_list[i][j]].split(" ") #for l in range(len(words)): #if chineseWordVecs.has_key(words[l]): #print("\n事件"+str(i)+"中的词语("+words[l]+")具有词向量") #print("该词向量为:"+str(chineseWordVecs[words[l]])) #print("提取出的词向量为:"+str(events_word2vec_list[i][j][l])) #print("提取出的词向量长度为:"+str(len(events_word2vec_list[i][j][l]))) #else: #print("\n事件"+str(i)+"中的词语("+words[l]+")不具有词向量") #print("提取出的词向量为:"+str(events_word2vec_list[i][j][l])) #print("提取出的词向量长度为:"+str(len(events_word2vec_list[i][j][l]))) print("根据余弦相似度,将词组用边连接起来") for i in range(len(events_code_list)): for j in range(len(events_code_list)): if i==j: continue else: #print("将事件("+str(i)+")与事件("+str(j)+")做比较") for k in range(len(events_code_list[i])): for l in range(len(events_code_list[j])): #print("将事件("+str(i)+")的第("+str(k)+")个词组与事件("+str(j)+")的第("+str(l)+")个词组做比较") max_cos=0 for m in range(len(events_word2vec_list[i][k])): for n in range(len(events_word2vec_list[j][l])): mn=0 mm=0 nn=0 for o in range(100): mn+=(events_word2vec_list[i][k][m][o]*events_word2vec_list[j][l][n][o]) mm+=(events_word2vec_list[i][k][m][o]*events_word2vec_list[i][k][m][o]) nn+=(events_word2vec_list[j][l][n][o]*events_word2vec_list[j][l][n][o]) if (mn==0)or(nn==0)or(mm==0): cos=0 else: cos=mn/(math.sqrt(mm)*math.sqrt(nn)) if cos>max_cos: max_cos=cos #print("词组("+words_list[events_code_list[i][k]]+")与词组("+words_list[events_code_list[j][l]]+")的余弦相似度为:"+str(max_cos)) if max_cos>0.7: if not dg.has_edge((events_code_list[i][k],events_code_list[j][l])): dg.add_edge((events_code_list[i][k],events_code_list[j][l])) print("词组("+words_list[events_code_list[i][k]]+")与词组("+words_list[events_code_list[j][l]]+")的余弦相似度为("+str(max_cos)+")超过阀值,建立一条边") pr=PRIterator(dg) page_ranks=pr.page_rank() print("词表长度为:"+str(len(words_list))) print("提取page_rangk字典中的值") for i in range(len(words_list)): page_rank=[] page_rank.append(i) page_rank.append(page_ranks[i]) page_ranks_list.append(page_rank) print(str(page_ranks_list)) print("按照PR值对词组进行排序") for i in range(len(page_ranks_list)-1): epoch=i+1 for j in range(len(page_ranks_list)-epoch): page_rank=[] if page_ranks_list[j][1]>page_ranks_list[j+1][1]: page_rank=page_ranks_list[j] page_ranks_list[j]=page_ranks_list[j+1] page_ranks_list[j+1]=page_rank print(str(page_ranks_list)) #print("提取出的篇章级事件为:") #for i in range(len(page_ranks_list)): #print("\n核心短语为:"+words_list[page_ranks_list[len(page_ranks_list)-i-1][0]]) #neighbors=dg.neighbors(page_ranks_list[len(page_ranks_list)-i-1][0]) #for j in range(len(neighbors)): #print(words_list[neighbors[j]]) print("\n输出所有的连接边:") edges=dg.edges() for i in range(len(edges)): print str(edges[i]) print("\n将编码替换为词组") nodes_word=[] for i in range(len(words_list)): nodes_word.append(words_list[i].decode('utf8')) edges_word=[] for i in range(len(edges)): tup=(words_list[edges[i][0]].decode('utf8'),words_list[edges[i][1]].decode('utf8')) #print("\n"+tup[0]+"---"+tup[1]) edges_word.append(tup) print("\n为节点赋予标签") labels=dict() for i in range(len(words_list)): labels[i]=words_list[i] print("\n使用networkx插件建立新的联通图") G=nx.Graph() G.add_nodes_from(nodes_word) G.add_edges_from(edges_word) #pos=nx.circular_layout(G) #pos=nx.spectral_layout(G) pos=nx.spring_layout(G) #pos=nx.shell_layout(G) #nx.draw(G,pos,node_shape='.',node_size=40) #nx.draw_networkx_nodes(G,pos,range(len(words_list)),node_shape='.',node_size=40) #nx.draw_networkx_labels(G,pos,labels,node_shape='.',node_size=40) plt.subplot(2,2,1) nx.draw_networkx(G,pos,node_shape='.',node_size=40) # print("\n寻找权值最大的路径并绘制出来") # dis=[] # path=[] # print("初始化路径矩阵") # for i in range(len(words_list)): # path_i=[] # for j in range(len(words_list)): # path_i.append(j) # path.append(path_i) # print("初始化邻接矩阵") # FLOAT_MAX=0.0 # for i in range(len(words_list)): # dis_i=[] # for j in range(len(words_list)): # if dg.has_edge((i,j)): # dis_i.append(0.0-page_ranks[i]-page_ranks[j]) # print("\n节点("+words_list[i]+")与节点("+words_list[j]+")之间存在一条边,这条边的权值为:"+str(dis_i[len(dis_i)-1])) # else: # dis_i.append(FLOAT_MAX) # print( # "\n节点(" + words_list[i] + ")与节点(" + words_list[j] + ")之间不存在边,将权值矩阵此处的值初始化为:" + str(dis_i[len(dis_i) - 1])) # dis.append(dis_i) # print("\n开始寻找任意两个节点之间权值最大的路径") # for temp in range(len(words_list)): # for row in range(len(words_list)): # for col in range(len(words_list)): # if dg.has_edge((temp,row)) and dg.has_edge((temp,col)): # select=dis[row][temp]+dis[temp][col] # if dis[row][col]>select: # dis[row][col]=select # path[row][col]=path[row][temp] # print("\n节点("+words_list[row]+")与节点("+words_list[col]+"之间插入了节点("+wodrs_list[temp]+")") print("\n寻找权值最大的路径") nodes_word=[] exist_nodes=[] node="" triggers_only_list=[] for i in range(len(triggers_list)): triggers_only_list.append(triggers_list[i][0]) for i in range(len(page_ranks_list)): if words_list[page_ranks_list[len(page_ranks_list)-i-1][0]] in triggers_only_list: print(words_list[page_ranks_list[len(page_ranks_list)-i-1][0]]+":"+str(page_ranks_list[len(page_ranks_list)-i-1][1])) for i in range(len(page_ranks_list)): if words_list[page_ranks_list[len(page_ranks_list)-i-1][0]] in triggers_only_list: #print(words_list[page_ranks_list[len(page_ranks_list)-i-1][0]]+":"+str(page_ranks_list[len(page_ranks_list)-i-1][1])) node = page_ranks_list[len(page_ranks_list) - i - 1][0] nodes_word.append(words_list[node]) exist_nodes.append(node) print("\n加入词语(" + words_list[node] + ")") break while True: neighbors = dg.neighbors(node) finish_state=True for i in range(len(neighbors)): if neighbors[i] in exist_nodes: finish_state=(finish_state and True) else: finish_state=(finish_state and False) if finish_state: break for i in range(len(neighbors)): if neighbors[i] in exist_nodes: continue else: max_neighbor = neighbors[i] print("\n最开始的最大邻接点是("+words_list[max_neighbor]+")") print("这个节点的PR值为:"+str(page_ranks[max_neighbor])) break for i in range(len(neighbors)): if not(neighbors[i] in exist_nodes): if (page_ranks[neighbors[i]]>page_ranks[max_neighbor]): max_neighbor = neighbors[i] print("\n最大邻接点更换为(" + words_list[max_neighbor] + ")") print("这个节点的PR值为:" + str(page_ranks[max_neighbor])) node=max_neighbor nodes_word.append(words_list[max_neighbor]) exist_nodes.append(node) print("加入词语(" + words_list[node] + ")") print("\n绘制最大权重路径") G2=nx.Graph() edges_word=[] for i in range(len(nodes_word)-1): tup=(nodes_word[i].decode('utf-8'),nodes_word[i+1].decode('utf-8')) edges_word.append(tup) G2.add_nodes_from(nodes_word) G2.add_edges_from(edges_word) pos = nx.spring_layout(G2) plt.subplot(2, 2, 4) nx.draw_networkx(G2, pos, node_shape='.', node_size=40) plt.savefig("graph.png") plt.show()
def get_system_font(): fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) print(mat_fonts)
from math import ceil from PIL import Image from io import BytesIO from bs4 import BeautifulSoup from matplotlib import pyplot as plt from matplotlib.font_manager import FontManager from cjkwrap import fill from warnings import filterwarnings from cachetools import TTLCache from ..aio_helper import run_async from .utils import logger from ..compat import cached_async MPL_TTF_LIST = FontManager().ttflist MPL_SANS_FONTS: Final = ( list({f.name for f in MPL_TTF_LIST if f.name == 'WenQuanYi Micro Hei'}) + list({f.name for f in MPL_TTF_LIST if f.name == 'WenQuanYi Zen Hei'}) + list({f.name for f in MPL_TTF_LIST if f.name.startswith('Noto Sans CJK')}) + list( {f.name for f in MPL_TTF_LIST if f.name.startswith('Microsoft YaHei')}) + list({f.name for f in MPL_TTF_LIST if f.name == 'SimHei'}) + list({ f.name for f in MPL_TTF_LIST if f.name in {'SimKai', 'SimSun', 'SimSun-ExtB'}
def fontsize(idx, default=FontManager.get_default_size()): coeff = p.nodes[idx]["freq"] / p.molecules size = default * coeff * ax_coeff return size
def _plot(self, a, key, title, gx, gy, num_x, num_y): if key not in a: logger.info("Skipping {} due to insufficient data".format(key)) return if not len(a['x']) == len(a['y']) == len(a[key]): logger.info("Skipping {} because data has holes".format(key)) return logger.debug('Plotting: %s', key) pp.rcParams['figure.figsize'] = ( self._image_width / 300, self._image_height / 300 ) fig, ax = pp.subplots() ax.set_title(title) if 'min' in self.thresholds.get(key, {}): vmin = self.thresholds[key]['min'] logger.debug('Using min threshold from thresholds: %s', vmin) else: vmin = min(a[key]) logger.debug('Using calculated min threshold: %s', vmin) if 'max' in self.thresholds.get(key, {}): vmax = self.thresholds[key]['max'] logger.debug('Using max threshold from thresholds: %s', vmax) else: vmax = max(a[key]) logger.debug('Using calculated max threshold: %s', vmax) logger.info("{} has range [{},{}]".format(key, vmin, vmax)) # Interpolate the data only if there is something to interpolate if vmin != vmax: rbf = Rbf( a['x'], a['y'], a[key], function='linear' ) z = rbf(gx, gy) z = z.reshape((num_y, num_x)) else: # Uniform array with the same color everywhere # (avoids interpolation artifacts) z = numpy.ones((num_y, num_x))*vmin # Render the interpolated data to the plot ax.axis('off') # begin color mapping norm = matplotlib.colors.Normalize(vmin=vmin, vmax=vmax, clip=True) mapper = cm.ScalarMappable(norm=norm, cmap=self._cmap) # end color mapping image = ax.imshow( z, extent=(0, self._image_width, self._image_height, 0), alpha=0.5, zorder=100, cmap=self._cmap, vmin=vmin, vmax=vmax ) # Draw contours if requested and meaningful in this plot if self._contours is not None and vmin != vmax: CS = ax.contour(z, colors='k', linewidths=1, levels=self._contours, extent=(0, self._image_width, self._image_height, 0), alpha=0.3, zorder=150, origin='upper') ax.clabel(CS, inline=1, fontsize=6) cbar = fig.colorbar(image) # Print only one ytick label when there is only one value to be shown if vmin == vmax: cbar.set_ticks([vmin]) # Draw floorplan itself to the lowest layer with full opacity ax.imshow(self._layout, interpolation='bicubic', zorder=1, alpha=1) labelsize = FontManager.get_default_size() * 0.4 if(self._showpoints): # begin plotting points for idx in range(0, len(a['x'])): if (a['x'][idx], a['y'][idx]) in self._corners: continue ax.plot( a['x'][idx], a['y'][idx], zorder=200, marker='o', markeredgecolor='black', markeredgewidth=1, markerfacecolor=mapper.to_rgba(a[key][idx]), markersize=6 ) ax.text( a['x'][idx], a['y'][idx] - 30, a['ap'][idx], fontsize=labelsize, horizontalalignment='center' ) # end plotting points fname = '%s_%s.png' % (key, self._title) logger.info('Writing plot to: %s', fname) pp.savefig(fname, dpi=300) pp.close('all')
import matplotlib matplotlib.use('TkAgg') from matplotlib.textpath import TextPath from matplotlib.patches import PathPatch from matplotlib.transforms import Affine2D, Bbox from matplotlib.font_manager import FontManager, FontProperties from matplotlib.colors import to_rgb import matplotlib.pyplot as plt from matplotlib.axes import Axes from logomaker.src.error_handling import check, handle_errors from logomaker.src.colors import get_rgb import numpy as np # Create global font manager instance. This takes a second or two font_manager = FontManager() # Create global list of valid font weights VALID_FONT_WEIGHT_STRINGS = [ 'ultralight', 'light', 'normal', 'regular', 'book', 'medium', 'roman', 'semibold', 'demibold', 'demi', 'bold', 'heavy', 'extra bold', 'black' ] def list_font_names(): """ Returns a list of valid font_name options for use in Glyph or Logo constructors. parameters ----------