Python数据科学包(八)----- 美化图形

1. 注释

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-10,11,1)
y = x*x

plt.plot(x,y)

plt.annotate('this is the bottom',xy=(0,1),xytext=(0,20),
             arrowprops=dict(facecolor='r',frac=0.2,headwidth=30,width=20))
plt.show()

2. 文字

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-11,10,1)
y = x*x

plt.plot(x,y)

plt.text(-2,40,'function:y=x*x',family='serif',size=20,color='r',
         style='italic',weight='black')

plt.text(-2,20,'function:y=x*x',family='sans-serif',size=20,color='g',
         style='oblique',weight='light',bbox=dict(facecolor='r',alpha=0.2))

plt.show()

3. Tex 公式

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()

ax = fig.add_subplot(111)
ax.set_xlim([1,7])
ax.set_ylim([1,5])

ax.text(2,4,r"$ \alpha_i \beta_j \pi \lambda \omega $",size=25)
ax.text(4,4,r"$ \sin(0)=\cos(\frac{\pi}{2}) $",size=25)
ax.text(2,2,r"$ \lim_{x \rightarrow y} \frac{1}{x^3} $",size=25)
ax.text(4,2,r"$ \sqrt[4]{x}=\sqrt{y} $",size=25)

plt.show()

4. 区域填充

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,5*np.pi,1000)
y1 = np.sin(x)
y2 = np.sin(2*x)

plt.plot(x,y1)
plt.plot(x,y2)

plt.fill(x,y1,'b',alpha=0.3)
plt.fill(x,y2,'r',alpha=0.3)

fig = plt.figure()
ax = plt.gca()

ax.plot(x,y1,color='r')
ax.plot(x,y2,color='b')

ax.fill_between(x,y1,y2,where=y1>=y2,facecolor='yellow',interpolate=True)
ax.fill_between(x,y1,y2,where=y2>y1,facecolor='green',interpolate=True)

plt.show()

5. 形状

import matplotlib.patches as mpatches

fig, ax = plt.subplots()
xy1 = np.array([0.2,0.2])
xy2 = np.array([0.2,0.8])
xy3 = np.array([0.8,0.2])
xy4 = np.array([0.8,0.8])

circle = mpatches.Circle(xy1,0.05)
ax.add_patch(circle)

rect = mpatches.Rectangle(xy2,0.2,0.1,color='r')
ax.add_patch(rect)

polygon = mpatches.RegularPolygon(xy3,6,0.1,color='g')
ax.add_patch(polygon)

ellipes = mpatches.Ellipse(xy4,0.4,0.2,color='y')
ax.add_patch(ellipes)

plt.axis('equal')
plt.grid()

plt.show()

6. 美化

plt.style.use('ggplot')

fig,axes = plt.subplots(ncols=2,nrows=2)
ax1,ax2,ax3,ax4 = axes.ravel()

x,y = np.random.normal(size=(2,100))
ax1.plot(x,y,'o')

x = np.arange(0,10)
y = np.arange(0,10)

ncolors = len(plt.rcParams['axes.color_cycle'])

shift = np.linspace(0,10,ncolors)
for s in shift:
    ax2.plot(x,y+s,'-')

x = np.arange(5)
y1,y2,y3 = np.random.randint(1,25,size=(3,5))
width = 0.25

ax3.bar(x,y1,width)
ax3.bar(x+width,y2,width,color=plt.rcParams['axes.color_cycle'][2])
ax3.bar(x+2*width,y2,width,color=plt.rcParams['axes.color_cycle'][3])

for i, color in enumerate(plt.rcParams['axes.color_cycle']):
    xy = np.random.normal(size=2)
    ax4.add_patch(plt.Circle(xy,radius=0.3,color=color))

ax4.axis('equal')

plt.show()

7. 极坐标

r = np.arange(1,6,1)

#全正方形
#r = np.empty(5)
#r.fill()

#八角形
#r = np.empty(9)
#r.fill(5)
pi_two = np.pi*2
theta = [0,pi_two/8,2*pi_two/8,3*pi_two/8,4*pi_two/8,
         5*pi_two/8,6*pi_two/8,7*pi_two/8,8*pi_two/8]

theta = [0,np.pi/2,np.pi,3*np.pi/2,2*np.pi]

ax = plt.subplot(111,projection='polar')
ax.plot(theta,color='r',linewidth=3)

ax.grid(True)

plt.show()

8. 函数积分

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Polygon

def func(x):
    return -(x-2)*(x-8)+40

x = np.linspace(0,10)
y = func(x)

fig, ax = plt.subplots()
plt.plot(x,y,'r',linewidth=2)

a = 2
b = 9

ax.set_xticks([a,b])
ax.set_yticks([])
ax.set_xticklabels(['$a$','$b$'])

ix = np.linspace(a,b)
iy = func(ix)
ixy = zip(ix,iy)

verts = [(a,0)]+list(ixy)+[(b,0)]
poly = Polygon(verts,facecolor='0.9',edgecolor='0.5')

x_math = (a+b)*0.5*0.7
y_math = 35

plt.text(x_math,y_math,r'$\int_a^b (-(x-2)*(x-8)+40)dx$',fontsize=20,horizontalalignment = 'center')
plt.ylim(ymin = 25)

ax.add_patch(poly)

plt.figtext(0.9,0.05,'$x$')
plt.figtext(0.1,0.9,'$y$')

plt.show()

9. 散点—条形图

plt.style.use('ggplot')

x = np.random.randn(200)
y = x + np.random.randn*0.5

margin_border = 0.1
width = 0.6
margin_between =0.02
height = 0.2

left_s = margin_border
bottom_s = margin_border
height_s = width
width_s = width

left_x = margin_border
bottom_x = margin_border + width + margin_between
height_x = height
width_x = width

left_y = margin_border + width + margin_between
bottom_y = margin_border
height_y =width
width_y = height

plt.figure(1,figsize=(8,8))

rect_s = [left_s,bottom_s,width_s,height_s]
rect_x = [left_x,bottom_x,width_x,height_x]
rect_y = [left_y,bottom_y,width_y,height_y]

axScatter = plt.axes(rect_s)
axHistX = plt.axes(rect_x)
axHistY = plt.axes(rect_y)

axHistX.set_xticks([])
axHistX.set_yticks([])

axScatter.scatter(x,y)

bin_width =0.25
xymax = np.max([np.max(np.fabs(x)),np.max(np.fabs(y))])
lim = int(xymax / bin_width+1)*bin_width

axScatter.set_xlim(-lim,lim)
axScatter.set_ylim(-lim,lim)

bins = np.arange(-lim,lim+bin_width,bin_width)

axHistX.hist(x,bins=bins)
axHistY.hist(y,bins=bins,orientation='horizontal')

axHistX.set_xlim(axScatter.get_xlim())
axHistY.set_ylim(axScatter.get_ylim())

plt.title('Scatter and Hist')

plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值