最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python matplotlib繪制xkcd動漫風(fēng)格的圖表

 更新時(shí)間:2022年03月08日 11:52:27   作者:mighty13  
xkcd是蘭道爾·門羅(Randall Munroe)的網(wǎng)名,又是他所創(chuàng)作的漫畫的名稱。本文將用matplotlib庫繪制xkcd動漫風(fēng)格的圖表,感興趣的可以了解一下

XKCD

xkcd是蘭道爾·門羅(Randall Munroe)的網(wǎng)名,又是他所創(chuàng)作的漫畫的名稱。作者蘭道爾·門羅(Randall Munroe)給作品的定義是一部“關(guān)于浪漫、諷刺、數(shù)學(xué)和語言的網(wǎng)絡(luò)漫畫”(A webcomic of romance,sarcasm, math, and language),被網(wǎng)友譽(yù)為深度宅向網(wǎng)絡(luò)漫畫。XKCD官方網(wǎng)站https://xkcd.com/。

matplotlib對XKCD風(fēng)格的支持

matplotlib.pyplot.xkcd函數(shù)可繪制XKCD風(fēng)格的圖表。

原理非常簡單,調(diào)用函數(shù)時(shí)保存原有rcParams設(shè)置,再更新rcParams使預(yù)置的XKCD風(fēng)格的生效,退出時(shí)還原rcParams設(shè)置。
xkcd相關(guān)定義如下:

def xkcd(scale=1, length=100, randomness=2):
    return _xkcd(scale, length, randomness)

class _xkcd:
    # This cannot be implemented in terms of rc_context() because this needs to
    # work as a non-contextmanager too.

    def __init__(self, scale, length, randomness):
        self._orig = rcParams.copy()

        if rcParams['text.usetex']:
            raise RuntimeError(
                "xkcd mode is not compatible with text.usetex = True")

        from matplotlib import patheffects
        rcParams.update({
            'font.family': ['xkcd', 'xkcd Script', 'Humor Sans', 'Comic Neue',
                            'Comic Sans MS'],
            'font.size': 14.0,
            'path.sketch': (scale, length, randomness),
            'path.effects': [
                patheffects.withStroke(linewidth=4, foreground="w")],
            'axes.linewidth': 1.5,
            'lines.linewidth': 2.0,
            'figure.facecolor': 'white',
            'grid.linewidth': 0.0,
            'axes.grid': False,
            'axes.unicode_minus': False,
            'axes.edgecolor': 'black',
            'xtick.major.size': 8,
            'xtick.major.width': 3,
            'ytick.major.size': 8,
            'ytick.major.width': 3,
        })

    def __enter__(self):
        return self

    def __exit__(self, *args):
        dict.update(rcParams, self._orig)

創(chuàng)建XKCD風(fēng)格的圖表

官方建議使用上下文管理器調(diào)用xkcd函數(shù)。

import matplotlib.pyplot as plt

with plt.xkcd():
    plt.bar([1,2,3],[1,2,3])
    plt.title('test')
plt.show()

使用中文字體創(chuàng)建XKCD風(fēng)格的圖表

官方文檔建議下載Humor Sans字體,根據(jù)源碼可知,'font.family': ['xkcd', 'xkcd Script', 'Humor Sans', 'Comic Neue', 'Comic Sans MS'],只要計(jì)算機(jī)上安裝這幾個(gè)字體,英文都可以顯示為XKCD風(fēng)格,現(xiàn)在Windows操作系統(tǒng)中基本都預(yù)裝有Comic Sans MS字體,因此,不用下載字體即可顯示英文。

xkcd默認(rèn)配置的幾個(gè)字體都不支持中文,如果像在XKCD風(fēng)格圖表中使用類似漫畫風(fēng)格的中文就需要下載中文字體,一般大家都推薦試用方正卡通簡體字體。下載安裝該字體后,只用重載字體緩存,修改rcParams['font.family']使中文字體生效即可。

1.安裝字體

下載方正卡通簡體字體,并進(jìn)行安裝。

2.更新中文字體

獲取方正卡通簡體字體的系統(tǒng)名稱

方正卡通簡體字體在系統(tǒng)中的名稱為FZKaTong-M19S。

設(shè)置方正卡通簡體字體為中文默認(rèn)字體

import matplotlib.pyplot as plt

plt.xkcd()
plt.rcParams.update({'font.family': "FZKaTong-M19S"})
plt.bar([1,2,3],[1,2,3])
plt.title("測試")
plt.show()

運(yùn)行后,標(biāo)題中文不能正常顯示,調(diào)試信息顯示找不到'FZKaTong-M19S',所以使用默認(rèn)的DejaVu Sans的字體。

findfont: Font family ['FZKaTong-M19S'] not found. Falling back to DejaVu Sans.

通過以下代碼驗(yàn)證,可知'FZKaTong-M19S'即方正卡通簡體字體沒有出現(xiàn)在ttflist當(dāng)中,所以找不到該字體。而ttflist是讀取字體緩存而構(gòu)建的,因此,重建字體緩存可能解決這個(gè)問題。

from matplotlib.font_manager import fontManager
print([i.name for i in fontManager.ttflist if 'FZKaTong-M19S' in i.name])

解決問題

默認(rèn)findfont函數(shù)是從字體緩存中查找的,新安裝的字體緩存中沒有,因此,需要重新創(chuàng)建緩存,并加載。

# 重建字體緩存
from matplotlib.font_manager import _rebuild

_rebuild()
import matplotlib.pyplot as plt

plt.xkcd()
plt.rcParams.update({'font.family': "FZKaTong-M19S"})
# plt.rcParams['font.family'] ='FZKaTong-M19S'
# plt.rc('font', **{'family' : 'FZKaTong-M19S'})
plt.bar([1,2,3],[1,2,3])
plt.title("測試")
plt.show()

到此這篇關(guān)于Python matplotlib繪制xkcd動漫風(fēng)格的圖表的文章就介紹到這了,更多相關(guān)Python matplotlib動漫圖表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python使用matplotlib實(shí)現(xiàn)交換式圖形顯示功能示例

    Python使用matplotlib實(shí)現(xiàn)交換式圖形顯示功能示例

    這篇文章主要介紹了Python使用matplotlib實(shí)現(xiàn)交換式圖形顯示功能,結(jié)合實(shí)例形式詳細(xì)分析了Python基于matplotlib模塊的數(shù)值運(yùn)算與圖形繪制相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • python 統(tǒng)計(jì)代碼行數(shù)簡單實(shí)例

    python 統(tǒng)計(jì)代碼行數(shù)簡單實(shí)例

    這篇文章主要介紹了python 統(tǒng)計(jì)代碼行數(shù)簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Python采集騰訊新聞實(shí)例

    Python采集騰訊新聞實(shí)例

    這篇文章主要介紹了Python采集騰訊新聞實(shí)例,一個(gè)簡單的例子,著重于實(shí)現(xiàn)步驟的講解,需要的朋友可以參考下
    2014-07-07
  • 一文讀懂Python 枚舉

    一文讀懂Python 枚舉

    這篇文章主要介紹了Python 枚舉的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-08-08
  • 詳解Python 調(diào)用C# dll庫最簡方法

    詳解Python 調(diào)用C# dll庫最簡方法

    這篇文章主要介紹了詳解Python 調(diào)用C# dll庫最簡方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 查看Python安裝路徑幾種方法

    查看Python安裝路徑幾種方法

    在使用python的時(shí)候,有時(shí)候會需要找到python包的安裝位置,本文主要介紹了查看Python安裝路徑幾種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • python刪除列表元素del,pop(),remove()及clear()

    python刪除列表元素del,pop(),remove()及clear()

    這篇文章主要介紹了python刪除列表元素del,pop(),remove()及clear(),列表元素能增加就可以刪除,這里要給大家介紹的是刪除列表元素,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • Python全棧之列表數(shù)據(jù)類型詳解

    Python全棧之列表數(shù)據(jù)類型詳解

    這篇文章主要給大家介紹了關(guān)于Python全棧之列表數(shù)據(jù)類型的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python實(shí)現(xiàn)DBSCAN聚類算法并樣例測試

    Python實(shí)現(xiàn)DBSCAN聚類算法并樣例測試

    聚類是一種機(jī)器學(xué)習(xí)技術(shù),它涉及到數(shù)據(jù)點(diǎn)的分組,聚類是一種無監(jiān)督學(xué)習(xí)的方法,是許多領(lǐng)域中常用的統(tǒng)計(jì)數(shù)據(jù)分析技術(shù)。本文給大家分享Python實(shí)現(xiàn)DBSCAN聚類算法并樣例測試,感興趣的朋友一起看看吧
    2021-06-06
  • python抓取網(wǎng)頁時(shí)字符集轉(zhuǎn)換問題處理方案分享

    python抓取網(wǎng)頁時(shí)字符集轉(zhuǎn)換問題處理方案分享

    python學(xué)習(xí)過程中發(fā)現(xiàn)英文不好學(xué)起來挺困難的,其中小弟就遇到一個(gè)十分蛋疼的問題,百度了半天就沒找到解決辦法~囧~摸索了半天自己解決了,記錄下來與君共勉。
    2014-06-06

最新評論

东明县| 酉阳| 理塘县| 阿城市| 宝兴县| 遵义市| 息烽县| 鹰潭市| 嵊州市| 江川县| 新河县| 通城县| 长武县| 方正县| 灵宝市| 涞源县| 类乌齐县| 攀枝花市| 汪清县| 沂源县| 聂荣县| 乌拉特后旗| 乳山市| 望谟县| 富川| 丰县| 福安市| 临沭县| 公安县| 平度市| 新蔡县| 芜湖县| 简阳市| 汝阳县| 汉寿县| 新龙县| 化州市| 彭泽县| 古丈县| 万宁市| 望都县|