Python使用matplotlib和pandas實現(xiàn)的畫圖操作【經(jīng)典示例】
本文實例講述了Python使用matplotlib和pandas實現(xiàn)的畫圖操作。分享給大家供大家參考,具體如下:
畫圖在工作再所難免,尤其在做數(shù)據(jù)探索時候,下面總結(jié)了一些關(guān)于python畫圖的例子
#encoding:utf-8 ''''' Created on 2015年9月11日 @author: ZHOUMEIXU204 ''' # pylab 是 matplotlib 面向?qū)ο罄L圖庫的一個接口。它的語法和 Matlab 十分相近 import pandas as pd #from ggplot import * import numpy as np import matplotlib.pyplot as plt df=pd.DataFrame(np.random.randn(1000,4),columns=list('ABCD')) df=df.cumsum() print(plt.figure()) print(df.plot()) print(plt.show()) # print(ggplot(df,aes(x='A',y='B'))+geom_point())
運行效果:
# 畫簡單的圖形 from pylab import * x=np.linspace(-np.pi,np.pi,256,endpoint=True) c,s=np.cos(x),np.sin(x) plot(x,c, color="blue", linewidth=2.5, linestyle="-", label="cosine") #label用于標(biāo)簽顯示問題 plot(x,s,color="red", linewidth=2.5, linestyle="-", label="sine") show()
運行效果:
#散點圖 from pylab import * n = 1024 X = np.random.normal(0,1,n) Y = np.random.normal(0,1,n) scatter(X,Y) show()
運行效果:
#條形圖 from pylab import * n = 12 X = np.arange(n) Y1 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n) Y2 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n) bar(X, +Y1, facecolor='#9999ff', edgecolor='white') bar(X, -Y2, facecolor='#ff9999', edgecolor='white') for x,y in zip(X,Y1): text(x+0.4, y+0.05, '%.2f' % y, ha='center', va= 'bottom') ylim(-1.25,+1.25) show()
運行效果:
#餅圖 from pylab import * n = 20 Z = np.random.uniform(0,1,n) pie(Z), show()
運行效果:
#畫三維圖 import numpy as np from mpl_toolkits.mplot3d import Axes3D from pylab import * fig=figure() ax=Axes3D(fig) x=np.arange(-4,4,0.1) y=np.arange(-4,4,0.1) x,y=np.meshgrid(x,y) R=np.sqrt(x**2+y**2) z=np.sin(R) ax.plot_surface(x,y,z,rstride=1,cstride=1,cmap='hot') show()
運行效果:
#用于圖像顯示的問題 import matplotlib.pyplot as plt import pandas as pd weights_dataframe=pd.DataFrame() plt.figure() plt.plot(weights_dataframe.weights_ij,weights_dataframe.weights_x1,label='weights_x1') plt.plot(weights_dataframe.weights_ij,weights_dataframe.weights_x0,label='weights_x0') plt.plot(weights_dataframe.weights_ij,weights_dataframe.weights_x2,label='weights_x2') plt.legend(loc='upper right') #用于標(biāo)簽顯示問題 plt.xlabel(u"迭代次數(shù)", fontproperties='SimHei') plt.ylabel(u"參數(shù)變化", fontproperties='SimHei') plt.title(u"迭代次數(shù)顯示", fontproperties='SimHei') #fontproperties='SimHei' 用于可以顯示中文 plt.show() import matplotlib.pyplot as plt from numpy.random import random colors = ['b', 'c', 'y', 'm', 'r'] lo = plt.scatter(random(10), random(10), marker='x', color=colors[0]) ll = plt.scatter(random(10), random(10), marker='o', color=colors[0]) l = plt.scatter(random(10), random(10), marker='o', color=colors[1]) a = plt.scatter(random(10), random(10), marker='o', color=colors[2]) h = plt.scatter(random(10), random(10), marker='o', color=colors[3]) hh = plt.scatter(random(10), random(10), marker='o', color=colors[4]) ho = plt.scatter(random(10), random(10), marker='x', color=colors[4]) plt.legend((lo, ll, l, a, h, hh, ho), ('Low Outlier', 'LoLo', 'Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'), scatterpoints=1, loc='lower left', ncol=3, fontsize=8) plt.show()
#pandas中畫圖 #畫累和圖 import pandas as pd import numpy as np import matplotlib.pyplot as plt ts=pd.Series(np.random.randn(1000),index=pd.date_range('1/1/2000',periods=1000)) ts=ts.cumsum() ts.plot() plt.show() df=pd.DataFrame(np.random.randn(1000,4),index=ts.index,columns=list('ABCD')) df=df.cumsum() df.plot() plt.show()
import pandas as pd import numpy as np import matplotlib.pyplot as plt #畫柱狀圖 df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) df2.plot(kind='bar') #分開并列線束 df2.plot(kind='bar', stacked=True) #四個在同一個里面顯示 百分比的形式 df2.plot(kind='barh', stacked=True)#縱向顯示 plt.show() df4=pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c':np.random.randn(1000)-1},columns=list('abc')) df4.plot(kind='hist', alpha=0.5) df4.plot(kind='hist', stacked=True, bins=20) df4['a'].plot(kind='hist', orientation='horizontal',cumulative=True) #cumulative是按順序排序,加上這個 plt.show() #Area Plot df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) df.plot(kind='area') df.plot(kind='area',stacked=False) plt.show()
#散點圖 import pandas as pd import numpy as np import matplotlib.pyplot as plt df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd']) df.plot(kind='scatter', x='a', y='b') df.plot(kind='scatter', x='a', y='b',color='DarkBlue', label='Group 1') #餅圖 df = pd.DataFrame(3 * np.random.rand(4, 2), index=['a', 'b', 'c', 'd'], columns=['x', 'y']) df.plot(kind='pie', subplots=True, figsize=(8, 4)) df.plot(kind='pie', subplots=True,autopct='%.2f',figsize=(8, 4)) #顯示百分比 plt.show() #畫矩陣散點圖 df = pd.DataFrame(np.random.randn(1000, 4), columns=['a', 'b', 'c', 'd']) pd.scatter_matrix(df, alpha=0.2, figsize=(6, 6), diagonal='kde') plt.show()
實際我個人喜歡用R語言畫圖,python畫圖也有g(shù)gplot類似的包
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)學(xué)運算技巧總結(jié)》、《Python圖片操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
Python2.7環(huán)境Flask框架安裝簡明教程【已測試】
這篇文章主要介紹了Python2.7環(huán)境Flask框架安裝方法,結(jié)合實例形式詳細(xì)分析了Python2.7環(huán)境下安裝Flask框架遇到的問題與相關(guān)解決方法、注意事項,并給出了一個基本的測試示例,需要的朋友可以參考下2018-07-07Python內(nèi)置函數(shù)—vars的具體使用方法
本篇文章主要介紹了Python內(nèi)置函數(shù)—vars的具體使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12詳解python的網(wǎng)絡(luò)編程基礎(chǔ)
這篇文章主要為大家介紹了python網(wǎng)絡(luò)編程的基礎(chǔ),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01Python?Excel數(shù)據(jù)處理之xlrd/xlwt/xlutils模塊詳解
在復(fù)雜的Excel業(yè)務(wù)數(shù)據(jù)處理中,三兄弟扮演的角色缺一不可。如何能夠使用xlrd/xlwt/xlutils三個模塊來實現(xiàn)數(shù)據(jù)處理就是今天的內(nèi)容,希望對大家有所幫助2023-03-03python通過apply使用元祖和列表調(diào)用函數(shù)實例
這篇文章主要介紹了python通過apply使用元祖和列表調(diào)用函數(shù),實例分析了python中apply方法的使用技巧,需要的朋友可以參考下2015-05-05