Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
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()
Exemplo n.º 4
0
 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')
Exemplo n.º 5
0
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()})
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
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
Exemplo n.º 10
0
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
Exemplo n.º 11
0
 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
Exemplo n.º 12
0
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,
        )
Exemplo n.º 13
0
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
Exemplo n.º 14
0
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()
Exemplo n.º 15
0
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
Exemplo n.º 16
0
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
Exemplo n.º 18
0
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
Exemplo n.º 19
0
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)
Exemplo n.º 20
0
#显示可用的中文字体,同时支持英文的
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)
Exemplo n.º 21
0
def reset_font_manager() -> None:
    global _font_manager
    _font_manager = FontManager()
Exemplo n.º 22
0
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()
Exemplo n.º 23
0
def _get_font_manager():
    global _font_manager
    if _font_manager is None:
        _font_manager = FontManager()
    return _font_manager
Exemplo n.º 24
0
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)
Exemplo n.º 26
0
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()
Exemplo n.º 27
0
def get_system_font():
    fm = FontManager()
    mat_fonts = set(f.name for f in fm.ttflist)
    print(mat_fonts)
Exemplo n.º 28
0
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'}
Exemplo n.º 29
0
 def fontsize(idx, default=FontManager.get_default_size()):
     coeff = p.nodes[idx]["freq"] / p.molecules
     size = default * coeff * ax_coeff
     return size
Exemplo n.º 30
0
    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')
Exemplo n.º 31
0
    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
    ----------