Python 立体图形的画法(一)

1.条形图的立体画法

import random 
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt 
import matplotlib.dates as mdates
mpl.rcParams['font.size']=10# 坐标轴标签的字体大小
fig=plt.figure(figsize=(10,5))#设置显示图形的大小
ax=fig.add_subplot(111,projection='3d')#绘制3d图
for z in [2011,2012,2013,2014]:
    xs=range(1,13)#x轴1到12
    ys=1000*np.random.rand(12)
    #np.random.rand() 生成给定维度[0,1)之间的数.
    # np.random.randn() 生成给定维度的标准正态分布随机数
    #np.random.randint(3,size =10) 生成最大值为3的,10个随机数
    color=plt.cm.Set2(random.choice(range(8)))#random.choice()从里面随机选出一个值,这样每次画的图形颜色就不一样了。
    ax.bar(xs,ys,zs=z,zdir='y',color=color,alpha=0.8)
    #里面的参数分别为条形图左边的坐标xs,条形图的高度ys,条形的z坐标,哪个方向的作为zdir,此图画的仍然是单个2D图.
ax.xaxis.set_major_locator(mpl.ticker.MultipleLocator(2))#设置间隔的数字的大小,在前面我们使用过,还有没有印象?
ax.yaxis.set_major_locator(mpl.ticker.MultipleLocator(1))#设置的y坐标的间隔为3。
ax.set_xlabel('Month')#设置标签
ax.set_ylabel('Year')
ax.set_zlabel('Scale Net [usd]')
plt.show()

Python 立体图形的画法(一)_第1张图片

2.生成曲面图

from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np
n_angles=36
n_radii=8
radii=np.linspace(0.125,1,n_radii)
#在指定的间隔内返回均匀间隔的数字。
#numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None),endpoint=True表示包括终止点的数。
angles=np.linspace(0,2*np.pi,n_angles,endpoint=False)
angles=np.repeat(angles[:,np.newaxis],n_radii,axis=1)
#将上一个angle的数组生成一个多维的数组,之后生成重复的n_radii个,沿着x轴复制。
x=np.append(0,(radii*np.cos(angles)).flatten())#降到一维
y=np.append(0,(radii*np.sin(angles)).flatten())
z=np.sin(-x*y)
fig=plt.figure()
ax=fig.gca(projection='3d')
ax.plot_trisurf(x,y,z,cmap=cm.jet,linewidth=0.9)#生成曲面图形
plt.show()

Python 立体图形的画法(一)_第2张图片

3.立体柱状图

mpl.rcParams['font.size']=10
samples=25
x=np.random.normal(5,1,samples)
y=np.random.normal(3,0.5,samples)
fig=plt.figure(figsize=(12,8))
ax=fig.add_subplot(211,projection='3d')
hist,xedges,yedges=np.histogram2d(x,y,bins=10)
elements=(len(xedges)-1*len(yedges)-1)
xpos,ypos=np.meshgrid(xedges[:-1]+0.25,yedges[:-1]+0.25)
xpos=xpos.flatten()
ypos=ypos.flatten()
zpos=np.zeros(100)
dx=0.1*np.ones_like(zpos)
dy=dx.copy()
dz=hist.flatten()
ax.bar3d(xpos,ypos,zpos,dx,dy,dz,color='b',alpha=0.4)
ax.xaxis.set_major_locator(mpl.ticker.MultipleLocator(0.5))
ax.yaxis.set_major_locator(mpl.ticker.MultipleLocator(0.4))
ax.zaxis.set_major_locator(mpl.ticker.MultipleLocator(0.6))
ax.set_xlabel('x axis')
ax.set_ylabel('y axis')
ax.set_zlabel('z axis')
ax2=fig.add_subplot(212)
ax2.scatter(x,y)
ax2.set_xlabel('x axis')
ax2.set_ylabel('y axis')
plt.show()
Python 立体图形的画法(一)_第3张图片

你可能感兴趣的:(python,学习笔记)