Matplotlib繪圖模塊學(xué)習(xí)筆記
老師指路->http://www.reibang.com/u/1f32f227da5f
使用工具:Anaconda-jupyter
一、Matplotlib繪圖模塊學(xué)習(xí)筆記
1奏路、折線圖
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline #魔法函數(shù)-展示圖像
plt.rcParams['font.sans-serif']=['SimHei'] #用來(lái)正常顯示中文標(biāo)簽
plt.rcParams['axes.unicode_minus']=False #用來(lái)正常顯示負(fù)號(hào)
X = np.linspace(0, 2*np.pi,100)# 均勻的劃分?jǐn)?shù)據(jù)
Y = np.sin(X)
Y1 = np.cos(X)
plt.title("Hello World!!")
plt.plot(X,Y)
plt.plot(X,Y1)
#plt.show()
繪制子圖
X = np.linspace(0, 2*np.pi,100)
Y = np.sin(X)
Y1 = np.cos(X)
plt.subplot(211) # 等價(jià)于 subplot(2,1,1)
plt.plot(X,Y)
plt.subplot(212)
plt.plot(X,Y1,color = 'r')
2七蜘、柱狀圖
柱狀圖一般用來(lái)統(tǒng)計(jì)一些類(lèi)型的數(shù)量挥等,例如不同產(chǎn)品的銷(xiāo)售額挂绰。柱狀圖一般有兩種翰蠢,一個(gè)是傳統(tǒng)的项乒,一個(gè)是疊加的。
data = [5,25,50,20]
plt.bar(range(len(data)),data)
#x=[0,1,2,3]
#plt.bar(x,data)
#四個(gè)產(chǎn)品銷(xiāo)量情況
多個(gè)柱狀圖
data = [[5,25,50,20],
[4,23,51,17],
[6,22,52,19]]
X = np.arange(4)
plt.bar(X + 0.00, data[0], color = 'b', width = 0.25,label = "A")
plt.bar(X + 0.25, data[1], color = 'g', width = 0.25,label = "B")
plt.bar(X + 0.50, data[2], color = 'y', width = 0.25,label = "C")
# 顯示上面設(shè)置的 lable
plt.legend()
#四個(gè)季度梁沧、三個(gè)產(chǎn)品銷(xiāo)量
疊加柱狀圖
data = [[5,25,50,20],
[4,23,51,17],
[6,22,52,19]]
X = np.arange(4)
plt.bar(X, data[0], color = 'b', width = 0.25)
plt.bar(X, data[1], color = 'g', width = 0.25,bottom = data[0])
plt.bar(X, data[2], color = 'y', width = 0.25,bottom = np.array(data[0]) + np.array(data[1]))
plt.show()
3檀何、散點(diǎn)圖
散點(diǎn)圖用來(lái)衡量?jī)蓚€(gè)連續(xù)變量之間的相關(guān)性
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
plt.scatter(x, y)
顏色大小區(qū)分
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.randn(N) # 顏色可以用數(shù)值表示
area = np.pi * (15 * np.random.rand(N))**2 # 調(diào)整大小
plt.scatter(x, y, c=colors, alpha=0.5, s = area)
4、直方圖
直方圖是用來(lái)衡量連續(xù)變量的概率分布的廷支。在構(gòu)建直方圖之前频鉴,我們需要先定義好bin(值的范圍),先把連續(xù)值劃分成不同等份恋拍,然后計(jì)算每一份里面數(shù)據(jù)的數(shù)量垛孔。
#舉例,繪制一個(gè)班級(jí)身高分布施敢,150-170有多少人周荐,170-180多少人狭莱,繪制頻率分布
a = np.random.rand(100)
plt.hist(a,bins= 20)
plt.ylim(0,15)
5、盒圖
boxlot用于表達(dá)連續(xù)特征的百分位數(shù)分布概作。統(tǒng)計(jì)學(xué)上經(jīng)常被用于檢測(cè)單變量的異常值腋妙,或者用于檢查離散特征和連續(xù)特征的關(guān)系
x = np.random.randint(20,100,size = (30,3))
plt.boxplot(x)
plt.ylim(0,120)
# 在x軸的什么位置填一個(gè) label,我們這里制定在 1仆嗦,2辉阶,3 位置,寫(xiě)上 A瘩扼,B谆甜,C
plt.xticks([1,2,3],['A','B','C'])
plt.hlines(y = np.median(x,axis = 0)[0] ,xmin =0,xmax=3)
Pandas直接繪圖
df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
# 繪制柱狀圖
df.plot.bar()
pyecharts繪圖
可鼠標(biāo)點(diǎn)擊互動(dòng)
pyecharts 繪圖的五個(gè)步驟:
1、創(chuàng)建圖形對(duì)象
2集绰、添加繪圖數(shù)據(jù)
3规辱、配置系列參數(shù)
4、配置全局參數(shù)
5栽燕、渲染圖片
from pyecharts.charts import Bar
from pyecharts import options as opts
# l.創(chuàng)建一個(gè)柱形圖對(duì)象
bar = Bar()
# 2.開(kāi)始添加各個(gè)軸的數(shù)據(jù)
bar.add_xaxis(["襯衫", "毛衣", "領(lǐng)帶", "褲子", "風(fēng)衣", "高跟鞋", "襪子"])
bar.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
bar.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
# 3.配置系列參數(shù):對(duì)標(biāo)簽罕袋、線型等的一些設(shè)置
# 4.配置全局參數(shù):對(duì)x、y軸碍岔、提示框等參數(shù)配置
bar.set_global_opts(title_opts=opts.TitleOpts(title="某商場(chǎng)銷(xiāo)售情況"))
# 5.渲染
# 生成本地 HTML 文件浴讯,默認(rèn)會(huì)在當(dāng)前目錄生成 render.html 文件,也可以傳入路徑參數(shù),如 bar.render("mycharts.html")
# bar.render()
# notebook 渲染
bar.render_notebook()
詞云圖
from pyecharts import options as opts
from pyecharts.charts import Page, WordCloud
from pyecharts.globals import SymbolType
words = [
("Sam S Club", 10000),
("Macys", 6181),
("Amy Schumer", 4386),
("Jurassic World", 4055),
("Charter Communications", 2467),
("Chick Fil A", 2244),
("Planet Fitness", 1868),
("Pitch Perfect", 1484),
("Express", 1112),
("Home", 865),
("Johnny Depp", 847),
("Lena Dunham", 582),
("Lewis Hamilton", 555),
("KXAN", 550),
("Mary Ellen Mark", 462),
("Farrah Abraham", 366),
("Rita Ora", 360),
("Serena Williams", 282),
("NCAA baseball tournament", 273),
("Point Break", 265),
]
wordcloud = (
WordCloud()
.add("", words, word_size_range=[20, 100])
.set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-基本示例"))
)
wordcloud.render_notebook()