<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
xkcd是蘭道爾·門羅(Randall Munroe)的網名,又是他所創作的漫畫的名稱。作者蘭道爾·門羅(Randall Munroe)給作品的定義是一部“關於浪漫、諷刺、數學和語言的網路漫畫”(A webcomic of romance,sarcasm, math, and language),被網友譽為深度宅向網路漫畫。XKCD官方網站https://xkcd.com/。
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)
官方建議使用上下文管理器呼叫xkcd函數。
import matplotlib.pyplot as plt with plt.xkcd(): plt.bar([1,2,3],[1,2,3]) plt.title('test') plt.show()
官方檔案建議下載Humor Sans字型,根據原始碼可知,'font.family': ['xkcd', 'xkcd Script', 'Humor Sans', 'Comic Neue', 'Comic Sans MS'],只要計算機上安裝這幾個字型,英文都可以顯示為XKCD風格,現在Windows作業系統中基本都預裝有Comic Sans MS字型,因此,不用下載字型即可顯示英文。
xkcd預設設定的幾個字型都不支援中文,如果像在XKCD風格圖表中使用類似漫畫風格的中文就需要下載中文字型,一般大家都推薦試用方正卡通簡體字型。下載安裝該字型後,只用過載字型快取,修改rcParams['font.family']使中文字型生效即可。
下載方正卡通簡體字型,並進行安裝。
獲取方正卡通簡體字型的系統名稱
方正卡通簡體字型在系統中的名稱為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函數是從字型快取中查詢的,新安裝的字型快取中沒有,因此,需要重新建立快取,並載入。
# 重建字型快取 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動漫圖表內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45