婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > python Matplotlib基礎(chǔ)--如何添加文本和標(biāo)注

python Matplotlib基礎(chǔ)--如何添加文本和標(biāo)注

熱門標(biāo)簽:江門智能電話機(jī)器人 滴滴地圖標(biāo)注公司 智能電話機(jī)器人調(diào)研 如何申請(qǐng)400電話代理 天津塘沽區(qū)地圖標(biāo)注 地圖標(biāo)注可以遠(yuǎn)程操作嗎 杭州房產(chǎn)地圖標(biāo)注 甘肅高頻外呼系統(tǒng) 400電話在線如何申請(qǐng)

創(chuàng)建一個(gè)優(yōu)秀的可視化圖表的關(guān)鍵在于引導(dǎo)讀者,讓他們能理解圖表所講述的故事。在一些情況下,這個(gè)故事可以通過(guò)純圖像的方式表達(dá),不需要額外添加文字,但是在另外一些情況中,圖表需要文字的提示和標(biāo)簽才能將故事講好。也許標(biāo)注最基本的類型就是圖表的標(biāo)簽和標(biāo)題,但是其中的選項(xiàng)參數(shù)卻有很多。讓我們?cè)诒竟?jié)中使用一些數(shù)據(jù)來(lái)創(chuàng)建可視化圖表并標(biāo)注這些圖表來(lái)表達(dá)這些有趣的信息。首先還是需要將要用到的模塊和包導(dǎo)入Pycharm:

import matplotlib.pyplot as plt
import matplotlib as mpl
plt.style.use('seaborn-whitegrid')
import numpy as np
import pandas as pd

例子:節(jié)假日對(duì)美國(guó)出生率的影響

本例中的數(shù)據(jù)可以在 https://raw.githubusercontent.com/jakevdp/data-CDCbirths/master/births.csv 下載。

我們先按照前面的方式進(jìn)行同樣的數(shù)據(jù)清洗程序,然后以圖表展示這個(gè)結(jié)果:

births = pd.read_csv(r'D:\python\Github學(xué)習(xí)材料\Python數(shù)據(jù)科學(xué)手冊(cè)\data\births.csv')

quartiles = np.percentile(births['births'], [25, 50, 75])
mu, sig = quartiles[1], 0.74 * (quartiles[2] - quartiles[0])
births = births.query('(births > @mu - 5 * @sig)  (births  @mu + 5 * @sig)')

births['day'] = births['day'].astype(int)

births.index = pd.to_datetime(10000 * births.year +
               100 * births.month +
               births.day, format='%Y%m%d')
births_by_date = births.pivot_table('births',
                  [births.index.month, births.index.day])
births_by_date.index = [pd.datetime(2012, month, day)
            for (month, day) in births_by_date.index]
fig, ax = plt.subplots(figsize=(12, 4))
births_by_date.plot(ax=ax);

當(dāng)我們繪制了這樣的圖表來(lái)表達(dá)數(shù)據(jù)時(shí),如果我們能對(duì)一些圖表的特性作出標(biāo)注來(lái)吸引讀者的注意力通常是非常有幫助的。這可以通過(guò)調(diào)用plt.text或ax.text函數(shù)來(lái)實(shí)現(xiàn),它們可以在某個(gè)特定的 x,y 軸位置輸出一段文字:

fig, ax = plt.subplots(figsize=(12, 4))
births_by_date.plot(ax=ax)

# 在折線的特殊位置標(biāo)注文字
style = dict(size=10, color='gray')

ax.text('2012-1-1', 3950, "New Year's Day", **style)
ax.text('2012-7-4', 4250, "Independence Day", ha='center', **style)
ax.text('2012-9-4', 4850, "Labor Day", ha='center', **style)
ax.text('2012-10-31', 4600, "Halloween", ha='right', **style)
ax.text('2012-11-25', 4450, "Thanksgiving", ha='center', **style)
ax.text('2012-12-25', 3850, "Christmas ", ha='right', **style)

# 設(shè)置標(biāo)題和y軸標(biāo)簽
ax.set(title='USA births by day of year (1969-1988)',
    ylabel='average daily births')

# 設(shè)置x軸標(biāo)簽月份居中
ax.xaxis.set_major_locator(mpl.dates.MonthLocator())
ax.xaxis.set_minor_locator(mpl.dates.MonthLocator(bymonthday=15))
ax.xaxis.set_major_formatter(plt.NullFormatter())
ax.xaxis.set_minor_formatter(mpl.dates.DateFormatter('%h'));

ax.text方法接收 x 位置、y 位置、一個(gè)字符串和額外可選的關(guān)鍵字參數(shù)可以用來(lái)設(shè)置顏色、大小、樣式、對(duì)齊等文本格式。上面我們使用了ha='right'和ha='center',這里的ha是*hirizonal alignment(水平對(duì)齊)*的縮寫(xiě)。要查閱更多的可用參數(shù),請(qǐng)查看plt.text()和mpl.text.Text()的文檔字符串內(nèi)容。

轉(zhuǎn)換和文本位置

在剛才的例子中,我們將文字標(biāo)注根據(jù)數(shù)據(jù)位置進(jìn)行了定位。有些時(shí)候我們需要將文字標(biāo)注獨(dú)立于數(shù)據(jù)位置而根據(jù)圖表位置進(jìn)行定位。Matplotlib 通過(guò)轉(zhuǎn)換完成這項(xiàng)工作。

任何的圖形顯示框架都需要在坐標(biāo)系統(tǒng)之間進(jìn)行轉(zhuǎn)換的機(jī)制。例如,一個(gè)數(shù)據(jù)點(diǎn)位于  被轉(zhuǎn)換為圖表中的某個(gè)位置,進(jìn)而轉(zhuǎn)換為屏幕上顯示的像素。這樣的坐標(biāo)轉(zhuǎn)換在數(shù)學(xué)上都相對(duì)來(lái)說(shuō)比較直接,,而且 Matplotlib 提供了一系列的工具實(shí)現(xiàn)了轉(zhuǎn)換(這些工具可以在matplotlib.transforms模塊中找到)。

一般來(lái)說(shuō),用戶很少需要關(guān)注這些轉(zhuǎn)換的細(xì)節(jié),但是當(dāng)考慮將文本在圖表上展示時(shí),這些知識(shí)卻比較有用。在這種情況中,下面三種定義好的轉(zhuǎn)換是比較有用的:

  • ax.transData:與數(shù)據(jù)坐標(biāo)相關(guān)的轉(zhuǎn)換
  • ax.tranAxes:與 Axes 尺寸相關(guān)的轉(zhuǎn)換(單位是 axes 的寬和高)
  • ax.tranFigure:與 figure 尺寸相關(guān)的轉(zhuǎn)換(單位是 figure 的寬和高)

下面我們來(lái)看看使用這些轉(zhuǎn)換將文字寫(xiě)在圖表中不同位置的例子:

fig, ax = plt.subplots(facecolor='lightgray')
ax.axis([0, 10, 0, 10])

# transform=ax.transData是默認(rèn)的,這里寫(xiě)出來(lái)是為了明確對(duì)比
ax.text(1, 5, ". Data: (1, 5)", transform=ax.transData)
ax.text(0.5, 0.1, ". Axes: (0.5, 0.1)", transform=ax.transAxes)
ax.text(0.2, 0.2, ". Figure: (0.2, 0.2)", transform=fig.transFigure);

注意默認(rèn)情況下,文字是在指定坐標(biāo)位置靠左對(duì)齊的:這里每個(gè)字符串開(kāi)始的"."的位置就是每種轉(zhuǎn)換的坐標(biāo)位置。

transData坐標(biāo)給定的是通常使用的 x 和 y 軸坐標(biāo)位置。transAxes坐標(biāo)給定的是從 axes 左下角開(kāi)始算起(白色區(qū)域)的坐標(biāo)位置,使用的是寬度和長(zhǎng)度的占比。transFigure坐標(biāo)類似,給定的是從 figure 左下角開(kāi)始算起(灰色區(qū)域)的坐標(biāo)位置,使用的也是寬度和長(zhǎng)度的占比。

因此如果我們改變了軸的最大長(zhǎng)度,只有transData坐標(biāo)會(huì)收到影響,其他兩個(gè)還是保持在相同位置:

ax.set_xlim(0, 2)
ax.set_ylim(-6, 6)
fig

這個(gè)變化可以通過(guò)動(dòng)態(tài)改變軸的最大長(zhǎng)度看的更加清楚:如果你在 notebook 執(zhí)行這段代碼,你可以將%matplotlib inline改為%matplotlib notebook,然后使用圖表的菜單來(lái)交互式的改變圖表。

箭頭和標(biāo)注

除了刻度標(biāo)簽和文字標(biāo)簽,另一種常用的標(biāo)注是箭頭。

在 Matplotlib 中繪制箭頭通常比你想象的難得多。雖然有plt.arrow()函數(shù),作者不建議使用它:這個(gè)函數(shù)繪制的箭頭是一個(gè) SVG 對(duì)象,因此在圖表使用不同的比例的情況會(huì)產(chǎn)生問(wèn)題,結(jié)果通常不能讓用戶滿意。因此,作者建議使用plt.annotate()函數(shù)。這個(gè)函數(shù)會(huì)繪制一些文字以及一個(gè)箭頭,并且箭頭可以非常靈活的進(jìn)行配置。

下面我們提供一些參數(shù)來(lái)使用annotate函數(shù):

fig, ax = plt.subplots()

x = np.linspace(0, 20, 1000)
ax.plot(x, np.cos(x))
ax.axis('equal')

ax.annotate('local maximum', xy=(6.28, 1), xytext=(10, 4),
      arrowprops=dict(facecolor='black', shrink=0.05))

ax.annotate('local minimum', xy=(5 * np.pi, -1), xytext=(2, -6),
      arrowprops=dict(arrowstyle="->",
              connectionstyle="angle3,angleA=0,angleB=-90"));

箭頭的樣式是使用箭頭屬性字典值進(jìn)行控制的,里面有很多可用的參數(shù)。這些參數(shù)在 Matplotlib 的在線文檔中已經(jīng)有了很詳細(xì)的說(shuō)明,因此在這里就不將這部分內(nèi)容重復(fù)介紹一遍了。我們?cè)谇懊娉錾蕡D上再使用一些參數(shù)進(jìn)行更多的說(shuō)明:

fig, ax = plt.subplots(figsize=(12, 4))
births_by_date.plot(ax=ax)
 
# 為圖表添加標(biāo)注
ax.annotate("New Year's Day", xy=('2012-1-1', 4100),  xycoords='data',
            xytext=(50, -30), textcoords='offset points',
            arrowprops=dict(arrowstyle="->",
                            connectionstyle="arc3,rad=-0.2"))
 
ax.annotate("Independence Day", xy=('2012-7-4', 4250),  xycoords='data',
            bbox=dict(boxstyle="round", fc="none", ec="gray"),
            xytext=(10, -40), textcoords='offset points', ha='center',
            arrowprops=dict(arrowstyle="->"))
 
ax.annotate('Labor Day', xy=('2012-9-4', 4850), xycoords='data', ha='center',
            xytext=(0, -20), textcoords='offset points')
ax.annotate('', xy=('2012-9-1', 4850), xytext=('2012-9-7', 4850),
            xycoords='data', textcoords='data',
            arrowprops={'arrowstyle': '|-|,widthA=0.2,widthB=0.2', })
 
ax.annotate('Halloween', xy=('2012-10-31', 4600),  xycoords='data',
            xytext=(-80, -40), textcoords='offset points',
            arrowprops=dict(arrowstyle="fancy",
                            fc="0.6", ec="none",
                            connectionstyle="angle3,angleA=0,angleB=-90"))
 
ax.annotate('Thanksgiving', xy=('2012-11-25', 4500),  xycoords='data',
            xytext=(-120, -60), textcoords='offset points',
            bbox=dict(boxstyle="round4,pad=.5", fc="0.9"),
            arrowprops=dict(arrowstyle="->",
                            connectionstyle="angle,angleA=0,angleB=80,rad=20"))
 
 
ax.annotate('Christmas', xy=('2012-12-25', 3850),  xycoords='data',
             xytext=(-30, 0), textcoords='offset points',
             size=13, ha='right', va="center",
             bbox=dict(boxstyle="round", alpha=0.1),
             arrowprops=dict(arrowstyle="wedge,tail_width=0.5", alpha=0.1));
 
# 設(shè)置圖表標(biāo)題和坐標(biāo)軸標(biāo)記
ax.set(title='USA births by day of year (1969-1988)',
       ylabel='average daily births')
 
# 設(shè)置月份坐標(biāo)居中顯示
ax.xaxis.set_major_locator(mpl.dates.MonthLocator())
ax.xaxis.set_minor_locator(mpl.dates.MonthLocator(bymonthday=15))
ax.xaxis.set_major_formatter(plt.NullFormatter())
ax.xaxis.set_minor_formatter(mpl.dates.DateFormatter('%h'));
 
ax.set_ylim(3600, 5400);

上圖中箭頭和文字框都非常詳盡了:可以看出你幾乎可以使用plt.annotate創(chuàng)建任何你想要的箭頭樣式。不幸的是,這意味著這種特性都需要手工進(jìn)行調(diào)整,因此如果需要獲得印刷質(zhì)量的圖像,這將是一個(gè)非常耗費(fèi)時(shí)間的工作。最后,必須指出,上述這種多種樣式混合的方式來(lái)展現(xiàn)數(shù)據(jù)肯定不是最佳實(shí)踐,這里只是為了盡可能多的介紹可用的參數(shù)。

更多關(guān)于 Matplotlib 的箭頭和標(biāo)注樣式的討論和例子可以訪問(wèn) Matplotlib gallery。

以上就是python Matplotlib基礎(chǔ)--如何添加文本和標(biāo)注的詳細(xì)內(nèi)容,更多關(guān)于python Matplotlib添加文本和標(biāo)注的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • 基于Python第三方插件實(shí)現(xiàn)西游記章節(jié)標(biāo)注漢語(yǔ)拼音的方法
  • python中matplotlib實(shí)現(xiàn)隨鼠標(biāo)滑動(dòng)自動(dòng)標(biāo)注代碼
  • Python編寫(xiě)一個(gè)驗(yàn)證碼圖片數(shù)據(jù)標(biāo)注GUI程序附源碼
  • Python tkinter實(shí)現(xiàn)圖片標(biāo)注功能(完整代碼)
  • Python繪制三角函數(shù)圖(sin\cos\tan)并標(biāo)注特定范圍的例子
  • python實(shí)現(xiàn)在函數(shù)圖像上添加文字和標(biāo)注的方法
  • python畫(huà)圖——實(shí)現(xiàn)在圖上標(biāo)注上具體數(shù)值的方法
  • Python+pyplot繪制帶文本標(biāo)注的柱狀圖方法
  • Python 給定的經(jīng)緯度標(biāo)注在地圖上的實(shí)現(xiàn)方法
  • 利用python和百度地圖API實(shí)現(xiàn)數(shù)據(jù)地圖標(biāo)注的方法
  • python實(shí)現(xiàn)簡(jiǎn)單圖片物體標(biāo)注工具
  • Python深度學(xué)習(xí)之圖像標(biāo)簽標(biāo)注軟件labelme詳解

標(biāo)簽:長(zhǎng)春 臨汾 河池 漢中 重慶 東莞 德宏 廊坊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python Matplotlib基礎(chǔ)--如何添加文本和標(biāo)注》,本文關(guān)鍵詞  python,Matplotlib,基礎(chǔ),如何,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python Matplotlib基礎(chǔ)--如何添加文本和標(biāo)注》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于python Matplotlib基礎(chǔ)--如何添加文本和標(biāo)注的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产视频一区二区三区在线观看| 成人网页在线观看| 欧美国产精品v| 亚洲精品乱码久久久久久黑人| 国产精品视频在线看| 欧美一区二区播放| 久久精品亚洲麻豆av一区二区 | 另类成人小视频在线| av在线不卡免费看| 精品噜噜噜噜久久久久久久久试看| 一区二区日韩电影| 欧美日韩一二三| 色综合天天做天天爱| 国产精品三级视频| 成人免费高清视频在线观看| 欧美浪妇xxxx高跟鞋交| 理论片日本一区| 国产精品国产a| 宅男噜噜噜66一区二区66| 五月天婷婷综合| 久久色在线视频| 欧美午夜视频网站| 另类欧美日韩国产在线| 成人午夜免费视频| 一区2区3区在线看| 久久久99精品久久| 欧美区在线观看| 99精品偷自拍| 午夜精品一区二区三区电影天堂| 久久久不卡网国产精品一区| 91久久香蕉国产日韩欧美9色| 精品在线你懂的| 亚洲不卡在线观看| 久久色在线观看| 欧美一二区视频| 欧美日韩综合在线| 成人免费高清在线| 国产伦精品一区二区三区在线观看| 亚洲自拍偷拍图区| 日本一二三不卡| 久久综合色播五月| 欧美日韩国产精品成人| 99在线精品一区二区三区| 国产福利一区二区三区在线视频| 日本少妇一区二区| 日本sm残虐另类| 亚洲柠檬福利资源导航| 91精品免费在线| 欧美另类久久久品| 91美女片黄在线| 91蝌蚪porny九色| 国产成人综合在线播放| 日本不卡一区二区| 中文av字幕一区| 中文字幕在线一区免费| 国产欧美综合色| 国产日韩欧美综合在线| wwwwww.欧美系列| 精品国产精品网麻豆系列| 欧美人狂配大交3d怪物一区| 色呦呦日韩精品| eeuss影院一区二区三区| 成人黄色国产精品网站大全在线免费观看 | 欧美少妇性性性| 欧美一区二区播放| 亚洲精品一区二区精华| 日韩欧美一级精品久久| 日韩视频中午一区| 26uuu亚洲综合色| 欧美国产一区二区在线观看 | 国产欧美日韩精品一区| 亚洲欧洲日产国码二区| 一区二区三区毛片| 精品在线亚洲视频| eeuss鲁片一区二区三区在线观看| 99久久99久久精品免费看蜜桃| 国产宾馆实践打屁股91| 国产成人在线色| 91黄色小视频| 国产日韩欧美在线一区| 日本午夜一区二区| 欧美最新大片在线看| 欧美成人性战久久| 中文字幕在线不卡国产视频| 亚洲综合在线电影| 高清在线观看日韩| 日韩精品一区二区三区中文精品| 亚洲精品少妇30p| 麻豆久久久久久久| 99久久精品国产精品久久| 日韩欧美一区二区免费| 亚洲色大成网站www久久九九| 岛国精品在线观看| 欧美精品乱人伦久久久久久| 亚洲日本在线看| 国产成人久久精品77777最新版本| 欧美视频在线一区二区三区 | 欧美在线观看一区二区| 中文字幕一区二区三区不卡在线| 老汉av免费一区二区三区| 在线观看免费亚洲| 亚洲欧美色图小说| 欧美日韩在线播放三区| 亚洲精品成人少妇| 在线免费亚洲电影| 亚洲成人午夜影院| 久久综合网色—综合色88| 东方欧美亚洲色图在线| 亚洲色图欧美偷拍| 日韩午夜激情免费电影| 日韩成人午夜电影| 国产日产欧美一区二区视频| 99re在线精品| 日韩高清不卡一区| 久久人人超碰精品| 91在线看国产| 国产激情一区二区三区四区 | 国产精品久久久久久一区二区三区| a亚洲天堂av| 午夜精品一区二区三区电影天堂| 欧美白人最猛性xxxxx69交| 不卡欧美aaaaa| 久久成人综合网| 亚洲一级二级三级| 中文字幕亚洲一区二区av在线 | 7777女厕盗摄久久久| 国产成人精品免费视频网站| 中文字幕在线不卡一区| 91精品国产免费久久综合| 日韩一区中文字幕| 日韩三级电影网址| 欧美影视一区二区三区| thepron国产精品| 成人激情开心网| 狠狠狠色丁香婷婷综合激情| 免费xxxx性欧美18vr| 亚洲免费毛片网站| 亚洲国产精品成人综合色在线婷婷 | 成人小视频在线观看| 免费国产亚洲视频| 天天综合网天天综合色| 午夜精品一区二区三区电影天堂| 日韩毛片高清在线播放| 国产女人18毛片水真多成人如厕| 亚洲影视在线播放| 免费成人在线观看| 国产一区欧美一区| 成人污视频在线观看| 丁香婷婷综合五月| 日本久久精品电影| 欧美乱妇20p| 久久中文字幕电影| 一区二区三区在线影院| 日韩国产成人精品| 国产91综合一区在线观看| 一本到一区二区三区| 欧美视频一区二| 久久影院视频免费| 国产精品热久久久久夜色精品三区| 亚洲欧美日韩在线播放| 天堂va蜜桃一区二区三区漫画版 | 日韩精品一区二区在线| 欧美激情一二三区| 日韩精品成人一区二区三区| 国产精品一区在线观看你懂的| 91麻豆swag| 亚洲国产精品99久久久久久久久 | 91一区二区在线| 国产亚洲欧美中文| 久久福利资源站| 欧美高清视频在线高清观看mv色露露十八| 在线观看亚洲a| 久久精品国产久精国产| 成年人网站91| 91香蕉视频污在线| 国产视频911| 久久精品国产免费| 在线视频一区二区三| 中文字幕av一区二区三区免费看 | 精品欧美一区二区在线观看| 亚洲高清免费观看| 97久久精品人人澡人人爽| 日韩欧美专区在线| 成人av电影在线网| 欧美精品一区二区三| 一区二区欧美在线观看| 色哟哟一区二区| 中文字幕一区二区不卡| 九色综合狠狠综合久久| 欧美丰满嫩嫩电影| 亚洲h精品动漫在线观看| 91国在线观看| 综合电影一区二区三区| 99国产精品久| 亚洲激情自拍视频| 欧美久久久久久久久中文字幕| 日本最新不卡在线| 国产精品乱码一区二区三区软件| 另类小说综合欧美亚洲| 国产精品色哟哟|