python在圖上繪製條形圖(python畫圖簡單圖形)

本文目錄一覽:

如何用python繪製各種圖形

1.環境

系統:windows10

python版本:python3.6.1

使用的庫:matplotlib,numpy

2.numpy庫產生隨機數幾種方法

import numpy as np

numpy.random

rand(d0, d1, …, dn)  

In [2]: x=np.random.rand(2,5)

In [3]: x

Out[3]:

array([[ 0.84286554,  0.50007593,  0.66500549,  0.97387807,  0.03993009],

[ 0.46391661,  0.50717355,  0.21527461,  0.92692517,  0.2567891 ]])

randn(d0, d1, …, dn)查詢結果為標準正態分布

In [4]: x=np.random.randn(2,5)

In [5]: x

Out[5]:

array([[-0.77195196,  0.26651203, -0.35045793, -0.0210377 ,  0.89749635],

[-0.20229338,  1.44852833, -0.10858996, -1.65034606, -0.39793635]])

randint(low,high,size)  

生成low到high之間(半開區間 [low, high)),size個數據

In [6]: x=np.random.randint(1,8,4)

In [7]: x

Out[7]: array([4, 4, 2, 7])

random_integers(low,high,size)  

生成low到high之間(閉區間 [low, high)),size個數據

In [10]: x=np.random.random_integers(2,10,5)

In [11]: x

Out[11]: array([7, 4, 5, 4, 2])

3.散點圖

x x軸

y y軸

s   圓點面積

c   顏色

marker  圓點形狀

alpha   圓點透明度                #其他圖也類似這種配置

N=50# height=np.random.randint(150,180,20)# weight=np.random.randint(80,150,20)

x=np.random.randn(N)

y=np.random.randn(N)

plt.scatter(x,y,s=50,c=’r’,marker=’o’,alpha=0.5)

plt.show()

4.折線圖

x=np.linspace(-10000,10000,100) #將-10到10等區間分成100份

y=x**2+x**3+x**7

plt.plot(x,y)

plt.show()

折線圖使用plot函數

5.條形圖

N=5

y=[20,10,30,25,15]

y1=np.random.randint(10,50,5)

x=np.random.randint(10,1000,N)

index=np.arange(N)

plt.bar(left=index,height=y,color=’red’,width=0.3)

plt.bar(left=index+0.3,height=y1,color=’black’,width=0.3)

plt.show()

orientation設置橫向條形圖

N=5

y=[20,10,30,25,15]

y1=np.random.randint(10,50,5)

x=np.random.randint(10,1000,N)

index=np.arange(N)# plt.bar(left=index,height=y,color=’red’,width=0.3)# plt.bar(left=index+0.3,height=y1,color=’black’,width=0.3)#plt.barh() 加了h就是橫向的條形圖,不用設置orientation

plt.bar(left=0,bottom=index,width=y,color=’red’,height=0.5,orientation=’horizontal’)

plt.show()

6.直方圖

m1=100

sigma=20

x=m1+sigma*np.random.randn(2000)

plt.hist(x,bins=50,color=”green”,normed=True)

plt.show()

# #雙變數的直方圖# #顏色越深頻率越高# #研究雙變數的聯合分布

#雙變數的直方圖#顏色越深頻率越高#研究雙變數的聯合分布

x=np.random.rand(1000)+2

y=np.random.rand(1000)+3

plt.hist2d(x,y,bins=40)

plt.show()

7.餅狀圖

#設置x,y軸比例為1:1,從而達到一個正的圓

#labels標籤參數,x是對應的數據列表,autopct顯示每一個區域占的比例,explode突出顯示某一塊,shadow陰影

labes=[‘A’,’B’,’C’,’D’]

fracs=[15,30,45,10]

explode=[0,0.1,0.05,0]#設置x,y軸比例為1:1,從而達到一個正的圓

plt.axes(aspect=1)#labels標籤參數,x是對應的數據列表,autopct顯示每一個區域占的比例,explode突出顯示某一塊,shadow陰影

plt.pie(x=fracs,labels=labes,autopct=”%.0f%%”,explode=explode,shadow=True)

plt.show()

8.箱型圖

import matplotlib.pyplot as pltimport numpy as npdata=np.random.normal(loc=0,scale=1,size=1000)#sym 點的形狀,whis虛線的長度plt.boxplot(data,sym=”o”,whis=1.5)plt.show()

#sym 點的形狀,whis虛線的長度

怎樣用python 繪製條形圖

用matplotlib包的barh函數繪製的,大致布局已經很相似了

import matplotlib.pyplot as plt

from matplotlib import cm

import numpy as np

label = [‘a’,’b’,’c’,’d’,’e’,’f’]

x = sorted([1234,221,765,124,2312,890])

idx = np.arange(len(x))

color = cm.jet(np.array(x)/max(x))

plt.barh(idx, x, color=color)

plt.yticks(idx+0.4,label)

plt.grid(axis=’x’)

plt.xlabel(‘Revenues Earned’)

plt.ylabel(‘Salespeople’)

plt.title(‘Top 12 Salespeople(2012)\n(in USD)’)

plt.show()

python畫hist直方圖

簡單說下圖形選擇啦,通常我們最常用的圖形是折線圖、扇形圖、條形圖,它們的功能簡單概括為:

折線圖:表示變化情況;

扇形圖:表示各類別的分布佔比情況;

條形圖:表示具體數值;

接下來要說的直方圖是以條形圖的形式展現的,在統計學中, 直方圖 (英語:Histogram)是一種對數據分布情況的圖形表示。

以下展示了python畫直方圖的幾種方式,這裡涉及到了3個包:matplotlib、pandas、seanborn。

1、使用 matplotlib.pyplot.hist 函數(本文主要講解該方法畫直方圖)

2、使用 pandas.DataFrame.plot.hist 函數

3、使用 pandas.DataFrame.hist 函數

4、使用 seaborn.distplot 函數

以下為 matplotlib.pyplot.hist 函數介紹:

參數:

返回值:

模擬真實場景:我們通過分析打分,給1000個客戶進行了排名,排名越靠前,說明客戶越優異,為了找到特定的200個客戶的排名處於這1000個客戶中的位置,使用了直方圖對比的方式。以下使用的數據是為模擬場景,隨機出來的結果排名比較靠後,所以這些客戶質量並不高:

hist:

matplotlib中文亂碼:

Python 數據可視化:繪製箱線圖、餅圖和直方圖

上一課介紹了柱形圖和條形圖,本課將介紹另外幾種統計圖表。

Box Plot 有多種翻譯,盒須圖、盒式圖、盒狀圖或箱線圖、箱形圖等,不管什麼名稱,它的基本結構是這樣的:

這種圖是由美國著名統計學家約翰·圖基(John Tukey)於 1977 年發明的,它能顯示出一組數據的上限、下限、中位數及上下四分位數。

為了更深入理解箱線圖的含義,假設有這樣一組數據:[1, 3, 5, 8, 10,11, 16, 98 ],共有 8 個數字。

首先要計算箱線圖中的「四分位數」,注意不是 4 個數:

對於已經排序的數據 [1, 3, 5, 8, 10,11, 16, 98 ],下四分位數(Q1)的位置是數列中從小到大第 2.25 個數,當然是不存在這個數字的——如果是第 2 個或者第 3 個,則存在。但是,可以用下面的原則,計算出此位置的數值。

四分位數等於與該位置兩側的兩個整數的加權平均數,此權重取決於相對兩側整數的距離遠近,距離越近,權重越大,距離越遠,權重越小,權數之和等於 1。

根據這個原則,可以分別計算本例中數列的 3 個四分位數。

在此計算基礎上,還可以進一步計算四分位間距和上限、下限的數值。

先看一個簡單示例,了解基本的流程。

輸出結果:

這裡繪製了兩張箱線圖,一張沒有顯示平均值,另外一張顯示了平均值,所使用的方法就是 boxplot,其完整參數列表為:

參數很多,不要擔心記憶問題,更別擔心理解問題。首先很多參數都是可以「望文生義」的,再有,與以前所使用的其他方法(函數)的參數含義也大同小異。

輸出結果:

所謂的「凹槽」,不是簡單形狀的改變,左右折線的上限區間表示了數據分布的置信區間,橫線依然是上限和下限。

python可視化神器——pyecharts庫

無意中從今日頭條中看到的一篇文章,可以生成簡單的圖表。據說一些大數據開發們也是經常用類似的圖表庫,畢竟有現成的,改造下就行,誰會去自己造輪子呢。

pyecharts是什麼?

pyecharts 是一個用於生成 Echarts 圖表的類庫。Echarts 是百度開源的一個數據可視化 JS 庫。用 Echarts 生成的圖可視化效果非常棒, pyecharts 是為了與 Python 進行對接,方便在 Python 中直接使用數據生成圖 。使用pyecharts可以生成獨立的網頁,也可以在flask、django中集成使用。

安裝很簡單:pip install pyecharts

如需使用 Jupyter Notebook 來展示圖表,只需要調用自身實例即可,同時兼容 Python2 和 Python3 的 Jupyter Notebook 環境。所有圖表均可正常顯示,與瀏覽器一致的交互體驗,簡直不要太強大。

參考自pyecharts官方文檔:

首先開始來繪製你的第一個圖表

使用 Jupyter Notebook 來展示圖表,只需要調用自身實例即可

add() 主要方法,用於添加圖表的數據和設置各種配置項

render() 默認將會在根目錄下生成一個 render.html 的文件,文件用瀏覽器打開。

使用主題

自 0.5.2+ 起,pyecharts 支持更換主體色系

使用 pyecharts-snapshot 插件

如果想直接將圖片保存為 png, pdf, gif 格式的文件,可以使用 pyecharts-snapshot。使用該插件請確保你的系統上已經安裝了 Nodejs 環境。

安裝 phantomjs $ npm install -g phantomjs-prebuilt

安裝 pyecharts-snapshot $ pip install pyecharts-snapshot

調用 render 方法 bar.render(path=’snapshot.png’) 文件結尾可以為 svg/jpeg/png/pdf/gif。請注意,svg 文件需要你在初始化 bar 的時候設置 renderer=’svg’。

圖形繪製過程

基本上所有的圖表類型都是這樣繪製的:

chart_name = Type() 初始化具體類型圖表。

add() 添加數據及配置項。

render() 生成本地文件(html/svg/jpeg/png/pdf/gif)。

add() 數據一般為兩個列表(長度一致)。如果你的數據是字典或者是帶元組的字典。可利用 cast() 方法轉換。

多次顯示圖表

從 v0.4.0+ 開始,pyecharts 重構了渲染的內部邏輯,改善效率。推薦使用以下方式顯示多個圖表。如果使是 Numpy 或者 Pandas,可以參考這個示例

當然你也可以採用更加酷炫的方式,使用 Jupyter Notebook 來展示圖表,matplotlib 有的,pyecharts 也會有的

Note: 從 v0.1.9.2 版本開始,廢棄 render_notebook() 方法,現已採用更加  pythonic  的做法。直接調用本身實例就可以了。

比如這樣

還有這樣

如果使用的是自定義類,直接調用自定義類示例即可

圖表配置

圖形初始化

通用配置項

xyAxis:平面直角坐標系中的 x、y 軸。(Line、Bar、Scatter、EffectScatter、Kline)

dataZoom:dataZoom 組件 用於區域縮放,從而能自由關注細節的數據信息,或者概覽數據整體,或者去除離群點的影響。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot)

legend:圖例組件。圖例組件展現了不同系列的標記(symbol),顏色和名字。可以通過點擊圖例控制哪些系列不顯示。

label:圖形上的文本標籤,可用於說明圖形的一些數據信息,比如值,名稱等。

lineStyle:帶線圖形的線的風格選項(Line、Polar、Radar、Graph、Parallel)

grid3D:3D笛卡爾坐標系組配置項,適用於 3D 圖形。(Bar3D, Line3D, Scatter3D)

axis3D:3D 笛卡爾坐標系 X,Y,Z 軸配置項,適用於 3D 圖形。(Bar3D, Line3D, Scatter3D)

visualMap:是視覺映射組件,用於進行『視覺編碼』,也就是將數據映射到視覺元素(視覺通道)

markLinemarkPoint:圖形標記組件,用於標記指定的特殊數據,有標記線和標記點兩種。(Bar、Line、Kline)

tooltip:提示框組件,用於移動或點擊滑鼠時彈出數據內容

toolbox:右側實用工具箱

圖表詳細

Bar(柱狀圖/條形圖)

Bar3D(3D 柱狀圖)

Boxplot(箱形圖)

EffectScatter(帶有漣漪特效動畫的散點圖)

Funnel(漏斗圖)

Gauge(儀錶盤)

Geo(地理坐標系)

GeoLines(地理坐標系線圖)

Graph(關係圖)

HeatMap(熱力圖)

Kline/Candlestick(K線圖)

Line(折線/面積圖)

Line3D(3D 折線圖)

Liquid(水球圖)

Map(地圖)

Parallel(平行坐標系)

Pie(餅圖)

Polar(極坐標系)

Radar(雷達圖)

Sankey(桑基圖)

Scatter(散點圖)

Scatter3D(3D 散點圖)

ThemeRiver(主題河流圖)

TreeMap(矩形樹圖)

WordCloud(詞雲圖)

用戶自定義

Grid 類:並行顯示多張圖

Overlap 類:結合不同類型圖表疊加畫在同張圖上

Page 類:同一網頁按順序展示多圖

Timeline 類:提供時間線輪播多張圖

統一風格

註:pyecharts v0.3.2以後,pyecharts 將不再自帶地圖 js 文件。如用戶需要用到地圖圖表,可自行安裝對應的地圖文件包。

地圖文件被分成了三個 Python 包,分別為:

全球國家地圖:

echarts-countries-pypkg

中國省級地圖:

echarts-china-provinces-pypkg

中國市級地圖:

echarts-china-cities-pypkg

直接使用python的pip安裝

但是這裡大家一定要注意,安裝完地圖包以後一定要重啟jupyter notebook,不然是無法顯示地圖的。

顯示如下:

總得來說,這是一個非常強大的可視化庫,既可以集成在flask、Django開發中,也可以在做數據分析的時候單獨使用,實在是居家旅行的必備神器啊

如何用python繪製簡單條形圖?

如何用python繪製簡單條形圖呢?這裡離不開matplotlib的使用。

條形圖是數據可視化圖形中很基礎也很常用的一種圖,簡單解釋下:條形圖也叫長條圖(英語:bar chart),亦稱條圖(英語:bar graph)、條狀圖、棒形圖、柱狀圖、條形圖表,是一種以長方形的長度為變數的統計圖表。長條圖用來比較兩個或以上的價值(不同時間或者不同條件),只有一個變數,通常利用於較小的數據集分析。長條圖亦可橫向排列,或用多維方式表達。

那麼一個普通的條形圖是長什麼樣子的呢?

當!當!當!就是下圖的這個樣子:

圖先亮出來啦,接下來研究這個圖是怎麼畫的吧,先看一下原數據長什麼樣子:

實際畫圖的流程和畫折線圖很相近,只是用到的畫圖函數不一樣,繪製條形圖的函數plt.bar():

由於這只是最簡單的一個條形圖,實際上條形圖的函數plt.bar()還有不少可以探索的參數設置,和對摺線圖函數plt.plot()的探索差不多,有興趣的孩子可以自己去進行探索哦。

按照條形長短進行排序展示的條形圖

當然也可以有其他的設置,比如說上圖中的線條高低參差不齊,這是因為x軸的數據是按照學校名稱進行排序的,那麼可不可以按照分數的高低進行排序呢?也就是讓所有的長方形按照從高到矮或者從矮到高的順序進行排列?

當然可以啦!這裡需要強調的是,條的高低排列等信息都是來源於原數據的,要想讓條形的順序發生改變,需要對畫圖的來源數據進行更改呢!

把原數據逆序排序後截取前十名數據賦值給data_yuwen,作為新的數據源傳入畫圖函數plt.bar(),畫出來的圖自然就不一樣了。

先看一眼數據長什麼樣子:

根據這個數據源繪製出的圖形如下,由於用來畫圖的數據進行了降序排序操作,所以生成條形圖的條也會進行降序排序展示:

很多時候,我們常見的條形圖還有另一種展現形式,那就是橫向的條形圖,比較火的那種動態條形圖絕大多數也都是橫向的條形圖,那麼橫向的條形圖如何繪製呢?

理解plt.bar()主要參數

其實也不難,只要清楚plt.bar()函數中主要參數的作用就可以了!條形圖函數中有五個主要參數,分別是x,height,width,bottom,orientation。其中x控制的是每個條在x軸上位置,height控制的是每個條的長度,width控制的是每個條的寬度,bottom控制的是每個條在y軸方向的起始位置,orientation控制的是條形的方向,是縱向還是橫向,默認是縱向的。

通過一個小例子理解下這幾個參數的作用:

上邊的幾行代碼輸出的圖形如下:

對比著代碼和實際輸出的條形圖,各個主要參數的作用是不是一目了然啦?

橫向條形圖

理解了這幾個參數作用後,縱向的條形圖轉換成橫向的條形圖就沒什麼難度了!

需要設置所有條形在x軸的位置都為0,也就全部從最左側開始畫條形;由於是橫向條形圖,所以實際上條的寬度顯示的是數據大小,將width參數設置成原數據中的語文成績;bottom控制每個條在y軸方向的起始位置,設置bottom=range(10)設置每個條形在y軸的起始位置各不相同避免有條形重疊;height控制的是每個條在y軸方向上的長度,條形圖橫向設置後,在y軸上的長度失去了衡量數據的意義,所以直接設置一個常數即可;最後設置條形的方向為橫向,即orientation=「horizontal」。

溫馨提示:數據和標籤一定要匹配,即plt.bar()重點的數據要和plt.yticks()中提取出來的標籤一一對應,一旦不匹配,整個圖展現的結果就是一個錯誤的結果!

上述代碼生成的條形圖如下:

感覺上邊這種生成橫向條形圖的方式有點點繞,和人們的習慣認知有點不大一樣,難道畫一個橫向條形圖就非得轉變自己的習慣認知這麼反人類嗎?

當然不是的,實際上有更簡單的方法繪製一個橫向條形圖,之所以沒有一開始就直接用這種簡單的方法,也是為了讓大家體會下條形圖參數的靈活設置而已,而且如果比較繞的方法都能理解了,簡單的方法理解和運用起來就更沒有難度了啊!

不賣關子了,我們來認識下和plt.bar()函數類似的plt.barh()函數。

plt.barh()函數是專門繪製水平條形圖的函數,主要的參數有:

y 控制y軸顯示的標籤來源width 控制橫向條形的長度,即用來進行對比的數據源height 條形的寬度需要設置的參數主要就是這三個,比用plt.bar()函數繪製水平條形圖簡單了很多,具體代碼如下:

效果圖:

和用plt.bar()函數繪製的橫向條形圖一毛一樣對不對?以後有需求繪製橫向條形圖,盡量用plt.barh()函數吧,畢竟它是專門繪製這種類型圖的,簡單好用。

然而實際工作中對於條形圖的需求不只是這些,比如例子中只是對各個學校語文成績的展示,有時候需要各個學科的成績同時展現在一幅條形圖中,有時候也需要繪製堆積條形圖對各學科的成績以及總成績進行展示,這些圖又該如何繪製呢?其實只要理解了各個參數的含義,繪製這些圖也不在話下,至於具體怎麼畫,且看下回分解啊!

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/183205.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-24 16:27
下一篇 2024-11-24 16:27

相關推薦

  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • 從不同位置觀察同一個物體,看到的圖形一定不同

    無論是在平時的生活中,還是在科學研究中,都會涉及到觀察物體的問題。而我們不僅要觀察物體本身,還需要考慮觀察的位置對觀察結果的影響。從不同位置觀察同一個物體,看到的圖形一定不同。接下…

    編程 2025-04-28
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28
  • Python大神作品:讓編程變得更加簡單

    Python作為一種高級的解釋性編程語言,一直被廣泛地運用於各個領域,從Web開發、遊戲開發到人工智慧,Python都扮演著重要的角色。Python的代碼簡潔明了,易於閱讀和維護,…

    編程 2025-04-28
  • 用Python實現簡單爬蟲程序

    在當今時代,互聯網上的信息量是爆炸式增長的,其中很多信息可以被利用。對於數據分析、數據挖掘或者其他一些需要大量數據的任務,我們可以使用爬蟲技術從各個網站獲取需要的信息。而Pytho…

    編程 2025-04-28
  • Python畫圖坐標軸刻度用法介紹

    本文將從以下幾個方面對Python畫圖坐標軸刻度進行詳細講解: 一、介紹坐標軸刻度 坐標軸刻度是指數軸上的標定刻度,用於表示數值的大小和位置。在畫圖的過程中,坐標軸的刻度設置顯得尤…

    編程 2025-04-27
  • 如何製作一個簡單的換裝遊戲

    本文將從以下幾個方面,為大家介紹如何製作一個簡單的換裝遊戲: 1. 遊戲需求和界面設計 2. 使用HTML、CSS和JavaScript開發遊戲 3. 實現遊戲的基本功能:拖拽交互…

    編程 2025-04-27
  • Python設置圖形填充顏色為綠色的語句

    圖形設計是計算機科學中一個重要的分支,而Python語言也是最受歡迎的圖形設計語言之一。Python憑藉其易用性和開源特性,贏得了很多開發者和程序員的青睞。本文將圍繞如何設置Pyt…

    編程 2025-04-27

發表回復

登錄後才能評論