本文实例讲述了Python使用matplotlib和pandas实现的画图操作。分享给大家供大家参考,具体如下:
画图在工作再所难免,尤其在做数据探索时候,下面总结了一些关于python画图的例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#encoding:utf-8
'''''
Created on 2015年9月11日
@author: ZHOUMEIXU204
'''
# pylab 是 matplotlib 面向对象绘图库的一个接口。它的语法和 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())
|
运行效果:
1
2
3
4
5
6
7
|
# 画简单的图形
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用于标签显示问题
plot(x,s,color = "red" , linewidth = 2.5 , linestyle = "-" , label = "sine" )
show()
|
运行效果:
1
2
3
4
5
6
7
|
#散点图
from pylab import *
n = 1024
X = np.random.normal( 0 , 1 ,n)
Y = np.random.normal( 0 , 1 ,n)
scatter(X,Y)
show()
|
运行效果:
1
2
3
4
5
6
7
8
9
10
11
12
|
#条形图
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()
|
运行效果:
1
2
3
4
5
|
#饼图
from pylab import *
n = 20
Z = np.random.uniform( 0 , 1 ,n)
pie(Z), show()
|
运行效果:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#画三维图
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()
|
运行效果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#用于图像显示的问题
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' ) #用于标签显示问题
plt.xlabel(u "迭代次数" , fontproperties = 'SimHei' )
plt.ylabel(u "参数变化" , fontproperties = 'SimHei' )
plt.title(u "迭代次数显示" , 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()
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#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()
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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()
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#散点图
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画图也有ggplot类似的包
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/luoyexuge/article/details/49069225