python數(shù)據(jù)可視化之條形圖畫法
什么是條形圖?
條形圖(bar chart)是用寬度相同的條形的高度或長(zhǎng)短來(lái)表示數(shù)據(jù)多少的圖形。條形圖可以橫置或縱置,縱置時(shí)也稱為柱形圖(column chart)。此外,條形圖有簡(jiǎn)單條形圖、復(fù)式條形圖等形式。
簡(jiǎn)單來(lái)說(shuō),條形圖的寬度一般是相同的,條形的高度或長(zhǎng)短表示數(shù)據(jù)的多少,這也就是條形圖和直方圖的本質(zhì)區(qū)別。
第一種畫法
import numpy as np from pandas import DataFrame # 由于我們的x軸上刻度值是中文 需要使用這個(gè)包 進(jìn)行中文的顯示 from matplotlib.pyplot import rcParams # 顯示中文 ?kaiti 表示 楷體 rcParams['font.sans-serif'] = 'kaiti' # 條形圖(縱向) df = DataFrame(data=np.random.randint(50,100,size=(3,3)), ? ? ? ? ? ? ? ?index=['張三','李四','王五'], ? ? ? ? ? ? ? ?columns=['Python','En','Math'] ? ? ? ? ? ? ? ) df.plot(kind='bar',fontsize=20) # 運(yùn)行結(jié)果如下圖:
第二種畫法
import numpy as np import matplotlib.pyplot as plt %matplotlib inline x = ['張三','李四','王五'] height = np.random.randint(80,100,size=3) plt.bar(x,height,width=0.2) height = np.random.randint(50,80,size=3) plt.bar(x,height,width=0.2) height = np.random.randint(10,80,size=3) plt.bar(x,height,width=0.2) # 設(shè)置圖例 ?ncol 表示一行顯示3個(gè)圖例 ?loc 設(shè)置圖例的位置 plt.legend(['數(shù)學(xué)成績(jī)','Python成績(jī)','英語(yǔ)成績(jī)'],ncol=3,loc=(0,1)) # 運(yùn)行結(jié)果如下:
第三種畫法
使用pyecharts,pyecharts 是一個(gè)用于生成 Echarts 圖表的類庫(kù)。Echarts 是百度開(kāi)源的一個(gè)數(shù)據(jù)可視化 JS 庫(kù)。用 Echarts 生成的圖可視化效果非常棒,為了與 Python 進(jìn)行對(duì)接,方便在 Python 中直接使用數(shù)據(jù)生成圖,簡(jiǎn)單便捷,可視化效果很棒,讓我們來(lái)一起看看吧~。
import numpy as np from pyecharts.charts import Bar from pyecharts import options as opts # V1 版本開(kāi)始支持鏈?zhǔn)秸{(diào)用 bar = ( ? ? Bar() ? ? .add_xaxis(['張三','李四','王五']) ? ? # 這里需要注意 y軸上傳遞的只能是列表 不能是數(shù)組,如果是數(shù)組 數(shù)據(jù)無(wú)法顯示 ? ? .add_yaxis("python成績(jī)",np.random.randint(40,100,size=3).tolist()) ? ? ? .add_yaxis("數(shù)學(xué)成績(jī)",np.random.randint(40,100,size=3).tolist()) ? ? .add_yaxis("英語(yǔ)成績(jī)",np.random.randint(40,100,size=3).tolist()) ? ? .set_global_opts(title_opts=opts.TitleOpts(title="某大學(xué)大三學(xué)生成績(jī)條形圖",subtitle='K班級(jí)')) ? ? ? ) # 如果不習(xí)慣鏈?zhǔn)秸{(diào)用的可以使用常規(guī)操作 ''' bar = Bar() bar.add_xaxis(['張三','李四','王五']) bar.add_yaxis("python成績(jī)",np.random.randint(40,100,size=3).tolist())? bar.add_yaxis("數(shù)學(xué)成績(jī)",np.random.randint(40,100,size=3).tolist())? bar.add_yaxis("英語(yǔ)成績(jī)",np.random.randint(40,100,size=3).tolist()) bar.set_global_opts(title_opts=opts.TitleOpts(title="某大學(xué)大三學(xué)生成績(jī)條形圖",subtitle='K班級(jí)')) ''' # 在 jupyter notebook上輸出 bar.render_notebook() # 也可以渲染到本地html文件 # bar.render('./成績(jī).html') # 運(yùn)行結(jié)果如下:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python如何運(yùn)用pyaudio庫(kù)去做一個(gè)固定采樣率音頻錄制器
這篇文章主要介紹了Python如何運(yùn)用pyaudio庫(kù)去做一個(gè)固定采樣率音頻錄制器問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05跟老齊學(xué)Python之賦值,簡(jiǎn)單也不簡(jiǎn)單
在《初識(shí)永遠(yuǎn)強(qiáng)大的函數(shù)》一文中,有一節(jié)專門討論“取名字的學(xué)問(wèn)”,就是有關(guān)變量名稱的問(wèn)題,本溫故而知新的原則,這里要復(fù)習(xí)一下2014-09-09Python?Pygame實(shí)戰(zhàn)之紅心大戰(zhàn)游戲的實(shí)現(xiàn)
說(shuō)起Windows自帶的游戲,相信許多80、90后的朋友都不陌生。本文就將利用Python中的Pygame模塊實(shí)現(xiàn)一下windows經(jīng)典游戲之一的紅心大戰(zhàn),需要的可以參考一下2022-02-02通過(guò)Python腳本+Jenkins實(shí)現(xiàn)項(xiàng)目重啟
Jenkins是一個(gè)流行的開(kāi)源自動(dòng)化服務(wù)器,用于快速構(gòu)建、測(cè)試和部署軟件,本文主要介紹了通過(guò)Python腳本+Jenkins實(shí)現(xiàn)項(xiàng)目重啟,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10Python實(shí)現(xiàn)的文本對(duì)比報(bào)告生成工具示例
這篇文章主要介紹了Python實(shí)現(xiàn)的文本對(duì)比報(bào)告生成工具,涉及Python基于difflib模塊實(shí)現(xiàn)對(duì)文本內(nèi)容進(jìn)行對(duì)比的相關(guān)操作技巧,需要的朋友可以參考下2018-05-05Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類的定義、實(shí)例化、封裝及私有變量/方法詳解
這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類的定義、實(shí)例化、封裝及私有變量/方法,結(jié)合具體實(shí)例形式較為詳細(xì)的分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類的定義、實(shí)例化、封裝、私有變量、私有方法等相關(guān)使用技巧,需要的朋友可以參考下2019-02-02