亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python matplotlib繪制xkcd動漫風格的圖表

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

XKCD

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

matplotlib對XKCD風格的支持

matplotlib.pyplot.xkcd函數可繪制XKCD風格的圖表。

原理非常簡單,調用函數時保存原有rcParams設置,再更新rcParams使預置的XKCD風格的生效,退出時還原rcParams設置。
xkcd相關定義如下:

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風格的圖表

官方建議使用上下文管理器調用xkcd函數。

import matplotlib.pyplot as plt

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

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

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

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

1.安裝字體

下載方正卡通簡體字體,并進行安裝。

2.更新中文字體

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

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

設置方正卡通簡體字體為中文默認字體

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()

運行后,標題中文不能正常顯示,調試信息顯示找不到'FZKaTong-M19S',所以使用默認的DejaVu Sans的字體。

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

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

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

解決問題

默認findfont函數是從字體緩存中查找的,新安裝的字體緩存中沒有,因此,需要重新創(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()

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

相關文章

  • Python??處理?Pandas?DataFrame?中的行和列

    Python??處理?Pandas?DataFrame?中的行和列

    這篇文章主要介紹了Python處理Pandas?DataFrame中的行和列,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • python模型性能ROC和AUC分析詳解

    python模型性能ROC和AUC分析詳解

    這篇文章主要為大家介紹了python模型性能ROC和AUC分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 解決Keyerror ''''acc'''' KeyError: ''''val_acc''''問題

    解決Keyerror ''''acc'''' KeyError: ''''val_acc''''問題

    這篇文章主要介紹了解決Keyerror 'acc' KeyError: 'val_acc'問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 詳解Python中type與object的恩怨糾葛

    詳解Python中type與object的恩怨糾葛

    估計很多人都會有這樣一個困惑,object?的類型是?type,但它同時又是?type?的基類,這是怎么做到的?帶著這個疑問,我們開始本文的內容
    2023-04-04
  • 詳解Python文件修改的兩種方式

    詳解Python文件修改的兩種方式

    這篇文章主要介紹了詳解Python文件修改的兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • python解析.pyd文件的詳細代碼

    python解析.pyd文件的詳細代碼

    這篇文章介紹了python解析.pyd文件的詳細代碼,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考
    2021-12-12
  • Python Pandas list列表數據列拆分成多行的方法實現

    Python Pandas list列表數據列拆分成多行的方法實現

    這篇文章主要介紹了Python Pandas list(列表)數據列拆分成多行的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • 使用Python的Zato發(fā)送AMQP消息的教程

    使用Python的Zato發(fā)送AMQP消息的教程

    這篇文章主要介紹了使用Python的Zato發(fā)送AMQP消息的教程,主要是基于一些Zato的圖形化界面進行操作,需要的朋友可以參考下
    2015-04-04
  • 在阿里云服務器上配置CentOS+Nginx+Python+Flask環(huán)境

    在阿里云服務器上配置CentOS+Nginx+Python+Flask環(huán)境

    這篇文章主要介紹了在阿里云服務器上配置CentOS+Nginx+Python+Flask環(huán)境的教程,值得一提的是這里的方案用Nginx作反向代理而使用Gunicorn作wsgi服務器,需要的朋友可以參考下
    2016-06-06
  • 使用python實現抓取中國銀行外匯牌價首頁數據實現

    使用python實現抓取中國銀行外匯牌價首頁數據實現

    這篇文章主要為大家介紹了如何使用python實現抓取中國銀行外匯牌價首頁數據的實現示例,有需要的同學可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10

最新評論