matplotlib可视化_常用图

可紊 提交于 2020-02-03 20:29:08

今天整理下matplotlib常用到的图形

matplotlib

引入matplotlib包:import matplotlib.pyplot as plt

将图片内嵌在交互窗口,而不是弹出一个图片窗口

%matplotlib inline #notebook模式下

%pylab inline #ipython模式下

matplotlib官方文档

matplotlib官方文档:http://matplotlib.org/users/pyplot_tutorial.html​
pyplot的api http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot

散点图(plt.scatter)

%matplotlib inline  
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['axes.unicode_minus'] = False #解决保存图像是负号'-'显示为方块的问题

#rand 均匀分布和 randn高斯分布
x=np.random.randn(1,1000)
y=np.random.randn(1,1000)
T=np.arctan2(x,y)
plt.scatter(x,y,c=T,s=25,alpha=0.5,marker='o')
#c:散点的颜色
#s:散点的大小
#alpha:是透明程度

plt.xlabel("name x")
plt.ylabel("name y")
plt.title("PyPlot scatter Example")
#xlabel : 设置X轴的文字
#ylabel : 设置Y轴的文字
#title : 设置图表的标题

折线图(plt.plot)

%matplotlib inline  
import matplotlib.pyplot as plt
import numpy as np

x1 = [1, 3, 5, 7, 9, 11, 13]  
y1=[30,31,33,35,47,99,480]    
x2 = [ 2,  4,  6, 8,  10,  12,  14]  
y2=[32,33,34,34,43,69,271] 

group_xlabels = ['8M','16M','32M','64M','128M','256M','512M']
#坐标轴的刻度显示的值

plt.title('this is title')  
plt.xlabel('this is xlables')  
plt.ylabel('this is ylables')  
  
plt.plot(x1, y1,'r')  
plt.plot(x2, y2,'b')  
plt.xticks(x1, group_xlabels, rotation=0) 
#plt.xticks(),plt.yticks()设置轴记号(设置坐标轴的刻度显示的值).

条形图(plt.bar)

%matplotlib inline  
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签,有中文出现的情况,需要u'内容'

x1 = [1, 3, 5, 7, 9, 11, 13]  
y1=[30,31,33,35,47,99,480]    

group_xlabels = [u'星期一',u'星期二',u'星期三',u'星期四',u'星期五',u'星期六',u'星期日']

plt.title('this is title')  
plt.xlabel('this is xlabels')  
plt.ylabel('this is ylabels')  
  
plt.bar(x1,y1,width=1)  
plt.xticks(x1, group_xlabels, rotation=0)

饼图(plt.pie)

import matplotlib.pyplot as plt
import pandas as pd

%matplotlib inline

movie_df=pd.read_csv("C:/Users/zzy/Desktop/movie_metadata.csv")
#movie_df.head()

def high_score_area(df):
    df1=df.where(df['imdb_score']>=8)
    p1=df1.groupby('country').movie_title.count().head(20)
    p1.plot.pie()
    
high_score_area(movie_df)

df=movie_df

df1=df.where(df['imdb_score']>=8)
p1=df1.groupby('country').movie_title.count().head(5)
label_list=p1.index
plt.title('pie chart')

plt.pie(p1,labels=label_list,autopct='%1.1f%%')

直方图(plt.hist)

 

import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline

mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)

# 数据的直方图
plt.hist(x, 50, normed=1, facecolor='g', alpha=0.75)

plt.xlabel('Smarts')
plt.ylabel('Probability')
plt.title('Histogram of IQ')

#添加文字
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
#固定坐标轴区间,X轴定在40-160,Y轴定在0-0.03
plt.axis([40, 160, 0, 0.03])
plt.grid(True)
plt.show()

箱线图(plt.box)

 

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

np.random.seed(2)  #设置随机种子
df = pd.DataFrame(np.random.rand(5,4),columns=['A', 'B', 'C', 'D'])#先生成0-1之间的5*4维度数据,再装入4列DataFrame中

plt.xlabel('whataver')
plt.ylabel('seed number')
plt.title('box chart')

df.boxplot(patch_artist=True) #也可用plot.box()

df.boxplot(sym='r*',vert=False,patch_artist=True,meanline=False,showmeans=True)
plt.show()

其中,sym='r*',表示异常点的形状,

vert=False,表示横向还是竖向(True),,

patch_artist=True,(上下四分位框内是否填充,True为填充)

meanline=False,showmeans=True,是否有均值线及其形状,meanline=True时,均值线也像中位数线一样是条红色线段,这样容易与中位数线混淆。 另外,还有其他参数,比如notch表示中间箱体是否缺口,whis为设置数据的范围,showcaps、showbox是否显示边框,可以参见

 

 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!