matplotlib子图与多种图形绘制

import numpy as np
import matplotlib.pyplot as plt

 #散点图

#scatter
fig=plt.figure()
#fig.add_subplot(3,3,1)#上下两种方法都可以
ax=fig.add_subplot(3,3,1)
n=128
#正态分布numpy.random.normal(loc=0.0, scale=1.0, size=None),(均值,标准差,size默认为none,只输出一个值)  
x=np.random.normal(0,1,n)
y=np.random.normal(0,1,n)
t=np.arctan2(y,x)#返回给定的 X 及 Y 坐标值的反正切值,arctan2(y,x)就是将反正切arctan(y/x)的值域从(-pi/2,pi/2)扩充到(-pi,pi)。
‘‘‘fig=plt.figure()   ---   创建图像
ax=plt.axes()   ---   创建坐标轴
在matplotlib中,可以把figure看成是一个容纳各种坐标轴,图像,文字和标签的容器,
axes是一个带有刻度和标签的矩形。我们通常用变量fig表示一个图形实例,用变量ax表示一个坐标轴实例。‘‘‘
#plt.axes([0.025,0.025,0.95,0.95])
#plt.scatter(x,y,s=75,c=t,alpha=0.7)#把t赋值给color,以满足我们想要达到多彩散点图的效果
ax.scatter(x,y,s=75,c=t,alpha=0.7)
#plt.axis([-1,1,-0.5,1])#显示范围,x轴范围从-1到1,y轴范围从-0.5到1
plt.xlim(-1.5,1.5),plt.xticks([])#plt.xlim(xmin, xmax),xmin:x轴上的最小值,xmax:x轴上的最大值
plt.ylim(-1.5,1.5),plt.yticks([])#坐标显示值清空
plt.axis()#一个Figure是一个空白的画板画板上有轴的集合(axes),集合元素包含基本的两个axis ,用来确定一个区域,axis是用来设置具体某一个坐标轴的属性的
plt.title("scatter")
plt.xlabel("x")
plt.ylabel("y")

 #柱状图

#bar
#fig.add_subplot(332)#大于10,要加逗号,小于10不需要加逗号
ax=fig.add_subplot(332)#大于10,要加逗号,小于10不需要加逗号
n=10
x1=np.arange(n)
y1=(1-x1/float(n))*np.random.uniform(0.5,1.0,n)#random.uniform(x, y) 方法将随机生成一个实数,它在 [x,y] 范围内。
y2=(1-x1/float(n))*np.random.uniform(0.5,1.0,n)
#plt.bar(x1,+y1,facecolor=‘#9999ff‘,edgecolor=‘white‘)#与ax.bar()等价
#plt.bar(x1,-y2,facecolor=‘#ff9999‘,edgecolor=‘white‘)
ax.bar(x1,+y1,facecolor=‘#9999ff‘,edgecolor=‘white‘)
ax.bar(x1,-y2,facecolor=‘#ff9999‘,edgecolor=‘white‘)
for x,y in zip(x1,y1):
    plt.text(x+0.4,y+0.05,‘%.2f‘%y,ha=‘center‘,va=‘bottom‘)#也可以用对象调用,ax.text()
for x,y in zip(x1,y2):
    ax.text(x+0.4,-y-0.05,‘%.2f‘%y,ha=‘center‘,va=‘top‘)
plt.title("bar")
plt.xlabel("x")
plt.ylabel("y")

 #饼状图

#pie
fig.add_subplot(333)
n=20
z=np.ones(n)#数组
z[-1] *= 2
plt.pie(z,explode=z*.05,colors=[‘%f‘ % (i/float(n)) for i in range (n)],
        labels=[‘%.2f‘ % (i/float(n)) for i in range(n)])#explode离中心的距离
plt.gca().set_aspect(‘equal‘)#两个轴的长度始终相同,equal表示x和y维度在数据坐标中的长度相同
plt.xticks([]),plt.yticks([])
plt.title("pie")

 #极坐标图形

#polar
fig.add_subplot(334,polar=True)#fig.add_subplot(334)我们会看到一个一个折线图
n=20
theta=np.arange(0.0,2*np.pi,2*np.pi/n)
radii=10*np.random.rand(n)
plt.polar(theta,radii)
#plt.plot(theta,radii)
#plt.title(‘plor‘)

 #热力图

#heatmap
fig.add_subplot(335)
from matplotlib import cm#color map 用来上色
data=np.random.rand(3,3)
cmap=cm.Blues#蓝色系
#plt.imshow()函数负责对图像进行处理,并显示其格式,但是不能显示
‘‘‘图片缩放的两种常见算法:
最近邻域内插法(Nearest Neighbor interpolation)
双向性内插法(bilinear interpolation)
最简单的图像缩放算法就是最近邻插值,就是将目标图像各点的像素值设为源图像中与其最近的点。算法优点在与简单、速度快。‘‘‘
map=plt.imshow(data,interpolation=‘nearest‘,cmap=cmap,aspect=‘auto‘,vmin=0,vmax=1)#aspect=‘auto‘自动缩放,vimn=0,填充为白色,为1,填充为蓝色
#plt.title(‘heatmap‘)

 #3D图形

#3D
from mpl_toolkits.mplot3d import Axes3D
ax=fig.add_subplot(336,projection=‘3d‘)
ax.scatter(1,1,3,s=100)
plt.title(‘3D‘)

#热图

#hot map
fig.add_subplot(313)
def f(x,y):
    return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
n=256
x=np.linspace(-3,3,n)
y=np.linspace(-3,3,n)
x,y=np.meshgrid(x,y)#meshgrid函数可以理解为用两个坐标轴上的点在平面上画网格
plt.contourf(x,y,f(x,y),8,alpha=.75,cmap=plt.cm.cool)#contourf填充二维高等线
plt.show()

#了解一下数组

n=20
z=np.ones(n)#数组
print(z)
z[-1] *= 2
print(z)
z[-2] *= 2
print(z)

#极坐标图不把属性设为true,会直接画到画布上

#polar
#fig.add_subplot(334,polar=True)#fig.add_subplot(334)我们会看到一个一个折线图
fig.add_subplot(334)
n=20
theta=np.arange(0.0,2*np.pi,2*np.pi/n)
radii=10*np.random.rand(n)
plt.polar(theta,radii)
#plt.plot(theta,radii)
plt.title(‘plor‘)
plt.show()

numpy.random.normal() & np.random.randn()

numpy中
numpy.random.normal(loc=0.0, scale=1.0, size=None)  
参数的意义为:
  loc:float
  概率分布的均值,对应着整个分布的中心center
  scale:float
  概率分布的标准差,对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高
  size:int or tuple of ints
  输出的shape,默认为None,只输出一个值
  我们更经常会用到np.random.randn(size)所谓标准正太分布(μ=0, σ=1),对应于np.random.normal(loc=0, scale=1, size)

camp参数:可参考 https://blog.csdn.net/weixin_39010770/article/details/88203326

最近邻插值法:可参考 https://blog.csdn.net/haluoluo211/article/details/80918147

contourf()可参考https://blog.csdn.net/qq_24059779/article/details/83022945

meshgrid函数  可参考https://www.cnblogs.com/shanlizi/p/9127878.html

原文地址:https://www.cnblogs.com/elly01/p/12688734.html

时间: 2024-11-05 22:33:45

matplotlib子图与多种图形绘制的相关文章

QT 基本图形绘制

QT 基本图形绘制 1.告诉绘制引擎一些东西 QPainter::Antialiasing 在可能的情况下,反锯齿       QPainter::TextAntialiasing 在可能的情况下,文字反锯齿       QPainter::SmoothPixmapTransform   采用平滑的Pixmap变换算法 2.绘制函数 3.风格 1)画刷风格 2)画笔风格 3)画笔连接点风格 4)顶端风格 4.绘图前的准备 1  如果要在绘图设备(一般为窗口部件)上绘图,只需创建一个QPainte

PCB ODB++(Gerber)图形绘制实现方法

这里讲解一下用net解析PCB图形绘制实现方法 一.解析PCB图形绘制实现 解析PCB图形,说简单也非常简单,先说一下,PCB Gerber图形由:点,线,弧,铜皮,文字 5类元素组成,通常简写为:P,L,A,S,T五类,这几类元素的难易程度,刚好是按这个顺序排列的(个人实际应用这么认为的).即然是5类就得建立5种元素的数据结构存储它吧, PAD结构 /// <summary> /// PAD 数据类型 /// </summary> public struct gP { publi

图形绘制

图形绘制 离散函数图形: 例:离散数据和离散函数可视化(离散数据作图方式) X1=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]; Y1=[1,2,3,4,5,6,7,8,9,10,10,9,8,7,6,5,4,3,2,1]; figure(1) plot(X1,Y1,'o','MarkerSize',15) %作图函数,’o’为图案,MarkerSize设置图案大小15 X2=1:20; Y2=log(X2); figure(2) pl

iOS:quartz2D绘图(给图形绘制阴影)

quartz2D既可以绘制原始图形,也可以给原始图形绘制阴影. 绘制阴影时,需要的一些参数:上下文.阴影偏移量.阴影模糊系数 注意:在对绘制的图形做了绘制阴影处理前,需要先对上下文进行保存,绘制阴影成功后,还要对上下文进行复位.目的是为了不影响后面的绘图操作. 举例的阴影绘制实例如下: 1.自定义一个视图类DemoView,并将控制器的视图关联该自定义类,同时在该定义类中重写- (void)drawRect:(CGRect)rect,将绘制无阴影图形和绘制阴影图形的调用方法写在里面.     

【Windows编程】系列第五篇:GDI图形绘制

上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数百个API可供我们使用,本篇把最常用的GDI绘图做一个讲解.GDI可以绘制点.直线曲线.填充封闭区域.位图以及文本,其中文本部分已经在上一篇中将了,请参考[Windows编程]系列第三篇:文本字符输出. 跟前面的GDI对象一样,本篇的这些绘图函数也必须要设备上下文句柄(HDC)作为函数参数,从前文我

CSS各种图形绘制

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>绘图</title> <style type="text/css"> div{ background:black; } /*绘正方形*/ .square{ width:100px; height:100px; } /*绘长方形*/ .retangle{ width:

IOS-绘制饼图等多种图形

参考网址:http://www.cnblogs.com/zhw511006/archive/2011/10/19/2218194.html http://blog.163.com/wkyuyang_001/blog/static/10802122820133190545227/ IOS-绘制饼图等多种图形,码迷,mamicode.com

JAVA学习之JAVA 2D图形绘制

最近一直没有空写博客,事情比较多,静不下心,事情顺其自然好了,有些事我也不懂为什么会变成现在这样,你以为你付出了你最珍贵的,但或许别人并不喜欢.算了,不多想,顺其自然好了. JAVA在图形绘制方面效率跟不上C++,但是我觉得JAVA也有其在图形方面的一些优势,不过对于大型桌面游戏就不行了,估计连流畅度都不能保证. 下面给出最近写的代码: package draw; import java.awt.*; import javax.swing.*; import java.awt.geom.*; p

第68课 基础图形绘制(下)

1. 简易绘图程序 (1)功能需求 ①自由图形绘制 ②基本图形绘制(直线.矩形和椭圆) ③能够选择图形绘制颜色 (2)界面解决方案 ①以QWidget为基类创建绘图主窗口 ②使用QGroupBox创建图形设置区域 ③使用单选按钮QRadioBox实现目标图形的选择 ④使用组合框QCombox实现绘图颜色的选择 2. 自由绘图的实现 (1)自由绘图的本质是跟踪鼠标的移动轨迹:因此,必须考虑什么时候开始?什么时候结束?以及如何记录鼠标移动? (2)从绘图参数的角度,可以将己经绘制结束的图形与正在绘制