深圳网站制作,郑州大型网站建设,宁波做微信网站,wordpress有哪些网站吗Matplotlib图像基础 写在前面1 基本绘图实例#xff1a;sin、cos函数图2 plot()函数详解**kwargs参数#xff1a; 3 matplotlib中绘图的默认配置4 设置图的横纵坐标的上下界5 设置横纵坐标上的记号6 调整图像的脊柱7 添加图例8 给一些特殊点加注释9 子图最后 写在前面
前面我… Matplotlib图像基础 写在前面1 基本绘图实例sin、cos函数图2 plot()函数详解**kwargs参数 3 matplotlib中绘图的默认配置4 设置图的横纵坐标的上下界5 设置横纵坐标上的记号6 调整图像的脊柱7 添加图例8 给一些特殊点加注释9 子图最后 写在前面
前面我们讲过好的图表在论文写作中是相当重要的这里学姐为大家整理了一些Matplotlib快速入门内容以及论文绘图的技巧帮助大家快速学习绘图。这里整理了完整的文档与技巧有需要的同学看下面另外如果没有美赛经验想要获奖欢迎咨询哦~
1 基本绘图实例sin、cos函数图
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x np.linspace(-np.pi, np.pi, 256,
endpointTrue)
c, s np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
show()2 plot()函数详解
调用形式一般为
plot([x], y, [fmt], dataNone, *kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2], …,
*kwargs)其中可选参数[fmt]是一个字符串用于定义图的基本属性颜色(color)、点型(marker)、线型(linestyle) 具体形式为 fmt [color][marker][linestyle] 注意这里的三个属性只能是每个属性的单个字母缩写若属性用的是全名则不能用[fmt] **kwargs参数
x: x轴数据y: y轴数据linewidth: 线宽color:线条颜色 marker: 标记风格 linestyle: 线条样式 markerfacecolor 标记颜色markersize 标记大小
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x np.linspace(-np.pi, np.pi, 256,
endpointTrue)
c, s np.cos(x), np.sin(x)
plt.plot(x, c, b|-)
plt.plot(x, s)
show()3 matplotlib中绘图的默认配置
from pylab import *
import numpy as np
import matplotlib.pylab as plt
# 创建一个8*6点(point)的图并设置分辨率为80
figure(figsize(8, 6), dpi80)
# 创建一个新的1*1的子图接下来的图样绘制在其中的第一块中
subplot(1, 1, 1)
# 得到坐标点(x,y)坐标
X np.linspace(-np.pi, np.pi, 256,
endpointTrue)
C, S np.cos(X), np.sin(X)
# 绘制余弦曲线使用蓝色的、连续的、宽度为1的线条
plot(X, C, colorblue, linewidth2.5,
linestyle-)
# 绘制正弦曲线使用绿色的、连续的、宽度为1的线条
plot(X, S, colorgreen, linewidth2.0,
linestyle-)
# 设置横轴的上下限
xlim(-4.0, 4.0)
# 设置横轴记号
xticks(np.linspace(-4, 4, 9, endpointTrue),
fontpropertiesTimes New Roman, size20)
# 设置纵轴记号
yticks(np.linspace(-1, 1, 5, endpointTrue))
#设置横纵坐标的名称以及对应字体格式
font {family : Times New Roman,
weight : normal,
size : 20,
}
# 设置横轴标签
plt.xlabel(X axis, font)# 设置纵轴标签
plt.ylabel(Y axis, font)
# 设置图像标题
plt.title(Demo Figure, font)
# 以分辨率72来保存图片
savefig(demo.png, dpi72)
# 在屏幕上显示
show()4 设置图的横纵坐标的上下界
xlim(), ylim()
from pylab import *
import numpy as np
# 得到坐标点(x,y)坐标
X np.linspace(-np.pi, np.pi, 256,
endpointTrue)
C, S np.cos(X), np.sin(X)
x_min, x_max X.min(), X.max()
c_min, c_max C.min(), C.max()
s_min, s_max S.min(), C.max()
y_min, y_max min(c_min, s_min), max(c_max,
s_max)
# 设置横纵坐标上下界的偏移量这样能够完整的显示图像且最美观
dx (x_max - x_min) * 0.2
dy (y_max - y_min) * 0.2
# 设置上下限
xlim(x_min - dx, x_max dx)
ylim(y_min - dy, y_max dy)
# 绘制余弦曲线使用蓝色的、连续的、宽度为2.5的线条
plot(X, C, colorblue, linewidth2.5,
linestyle-)
# 绘制正弦曲线使用绿色的、连续的、宽度为2.0的线条
plot(X, S, colorgreen, linewidth2.0,
linestyle-)
show()5 设置横纵坐标上的记号 xticks(), yticks() 这两个函数的用处在于指明横纵轴需要显示的内容和显示内容的位置参数的值可以有两种情况
当横纵坐标的值为普通的数字时参数为一个listlist中的元素为数字此时两个函数的参数只需要这一个list当横纵坐标的值为公式(使用的latex中的公式表示如’pipipi’)或其他和当前的坐标值不同的值时参数为两个list第一个list为普通数字对应的是纵坐标值第二个list为第一个list中纵坐标位置对应要显示的值可以是公式也可以是其他和当前纵坐标值不同的表示
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x np.linspace(-np.pi, np.pi, 256,
endpointTrue)
c, s np.cos(x), np.sin(x)
xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
[r$-\pi$, r$-\pi/2$, r$0$, r$\pi/2$,
r$\pi$])
yticks([-1, 0, 1],
[r$-1$, r$0$, r$1$])
plt.plot(x, c)
plt.plot(x, s)
show()6 调整图像的脊柱
坐标轴和上面的记号连在一起就形成了脊柱(Spines,一条线段上又一系列凸起是不是很像脊柱)它记录了数据区域的范围它们可以放在任意位置不过默认是放在图的四边。 实际上每幅图都有四条脊柱(上下左右)为了将脊柱放在图的中间我们必须将其中的两条(上和右)设置为无色然后调整剩下的两条到合适的位置——数据空间的0点。
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x np.linspace(-np.pi, np.pi, 256,
endpointTrue)
c, s np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
# 设置坐标轴gca()获取坐标轴信息
ax gca()使用ax.spines[]选定边框使用set_color()将选定的边框的颜
色设为 noneax.spines[right].set_color(none)
ax.spines[top].set_color(none)移动坐标轴将bottom即x坐标轴移动到y0的位置
ax.xaixs为x轴set_ticks_position()用于从上下左右
(top/bottom/left/right)四条脊柱中选择一个作为x轴
使用set_position()设置边框位置y0的位置。位置的所有属性
包括:outward、axes、dataax.xaxis.set_ticks_position(bottom)
ax.spines[bottom].set_position((data, 0))将left 即y坐标轴设置到x0的位置ax.yaxis.set_ticks_position(left) # 选定y轴
ax.spines[left].set_position((data, 0))
plt.show()7 添加图例
在 plot() 函数中增加一个参数 label 再通过 legend()函数显示图例
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x np.linspace(-np.pi, np.pi, 256,
endpointTrue)
c, s np.cos(x), np.sin(x)
plt.plot(x, c, labelcosine)
plt.plot(x, s, labelsine)
plt.legend(locupper left)
plt.show()8 给一些特殊点加注释
scatter(x, y, sNone, cNone, markerNone,
cmapNone, normNone, vminNone, vmaxNone,
alphaNone, linewidthsNone, vertsNone,
edgecolorsNone, holdNone, dataNone, *kwargs)
x - x 值
向量
y - y 值
向量
sz - 标记面积
36 默认 | 数值标量 | 行或列向量 | []
c - 标记颜色
[0 0 1] 默认 | RGB 三元数 | 由 RGB 三元数组成的三列
矩阵 | 向量 | r | g | b | .
mkr - 标记类型
o 默认 | | * | . | x | .
filled - 用于填充标记内部的选项
ax - 目标坐标区
Axes 对象 | PolarAxes 对象
MarkerEdgeColor - 标记轮廓颜色
flat 默认 | none | RGB 三元数 | r | g |
b | .
MarkerFaceColor - 标记填充颜色
none 默认 | flat | auto | RGB 三元数 | r
| g | b | .
LineWidth - 标记边缘的宽度
0.5 默认 | 正值
s - Scatter 对象
Scatter 对象函数用于在图像中绘制散点
参数
x/y:都是向量形式且维度相同分别对应坐标点的横纵坐标scalar: 标记大小以平方磅为单位的标记面积可以有一下形式 数值标量 以相同的大小绘制所有标记。行或列向量 使每个标记具有不同的大小。x、y 和 sz中的相应元素确定每个标记的位置和面积。sz 的长度必须等于 x 和 y 的长度。[] 使用 36 平方磅的默认面积。 color:标记的颜色有下列不同的赋值方式 RGB 三元数或颜色名称 - 使用相同的颜色绘制所有标记。由 RGB 三元数组成的三列矩阵 - 对每个标记使用不同的颜色。矩阵的每行为对应标记指定一种 RGB 三元数颜色。行数必须等于 x 和 y 的长度向量 - 对每个标记使用不同的颜色并以线性方式将 c 中的值映射到当前颜色图中的颜色。c 的长度必须等于 x 和y 的长度。要更改坐标区的颜色图请使用 colormap 函数。如果散点图中有三个点并且您希望这些颜色成为颜色图的索引请以三元素列向量的形式指定 c。
cnames {
aliceblue: #F0F8FF,
antiquewhite: #FAEBD7,
aqua: #00FFFF,
aquamarine: #7FFFD4,
azure: #F0FFFF,
beige: #F5F5DC,
bisque: #FFE4C4,
black: #000000,
blanchedalmond: #FFEBCD,
blue: #0000FF,
blueviolet: #8A2BE2,
brown: #A52A2A,
burlywood: #DEB887,
cadetblue: #5F9EA0,
chartreuse: #7FFF00,
chocolate: #D2691E,
coral: #FF7F50,
cornflowerblue: #6495ED,
cornsilk: #FFF8DC,
crimson: #DC143C,
cyan: #00FFFF,
darkblue: #00008B,
darkcyan: #008B8B,
darkgoldenrod: #B8860B,
darkgray: #A9A9A9,
darkgreen: #006400,
darkkhaki: #BDB76B,
darkmagenta: #8B008B,
darkolivegreen: #556B2F,
darkorange: #FF8C00,
darkorchid: #9932CC,
darkred: #8B0000,
darksalmon: #E9967A,
darkseagreen: #8FBC8F,
darkslateblue: #483D8B,
darkslategray: #2F4F4F,
darkturquoise: #00CED1,
darkviolet: #9400D3,
deeppink: #FF1493,
deepskyblue: #00BFFF,
dimgray: #696969,
dodgerblue: #1E90FF,
firebrick: #B22222,
floralwhite: #FFFAF0,
forestgreen: #228B22,
fuchsia: #FF00FF,
gainsboro: #DCDCDC,
ghostwhite: #F8F8FF,
gold: #FFD700,
goldenrod: #DAA520,
gray: #808080,
green: #008000,
greenyellow: #ADFF2F,
honeydew: #F0FFF0,
hotpink: #FF69B4,
indianred: #CD5C5C,
indigo: #4B0082,
ivory: #FFFFF0,
khaki: #F0E68C,
lavender: #E6E6FA,
lavenderblush: #FFF0F5,
lawngreen: #7CFC00,
lemonchiffon: #FFFACD,
lightblue: #ADD8E6,
lightcoral: #F08080,
lightcyan: #E0FFFF,
lightgoldenrodyellow: #FAFAD2,
lightgreen: #90EE90,
lightgray: #D3D3D3,
lightpink: #FFB6C1,
lightsalmon: #FFA07A,
lightseagreen: #20B2AA,
lightskyblue: #87CEFA,
lightslategray: #778899,
lightsteelblue: #B0C4DE,
lightyellow: #FFFFE0,
lime: #00FF00,
limegreen: #32CD32,
linen: #FAF0E6,
magenta: #FF00FF,
maroon: #800000,
mediumaquamarine: #66CDAA,
mediumblue: #0000CD,
mediumorchid: #BA55D3,
mediumpurple: #9370DB,
mediumseagreen: #3CB371,
mediumslateblue: #7B68EE,
mediumspringgreen: #00FA9A,
mediumturquoise: #48D1CC,
mediumvioletred: #C71585,
midnightblue: #191970,
mintcream: #F5FFFA,
mistyrose: #FFE4E1,
moccasin: #FFE4B5,
navajowhite: #FFDEAD,
navy: #000080,
oldlace: #FDF5E6,
olive: #808000,
olivedrab: #6B8E23,
orange: #FFA500,
orangered: #FF4500,
orchid: #DA70D6,
palegoldenrod: #EEE8AA,
palegreen: #98FB98,
paleturquoise: #AFEEEE,
palevioletred: #DB7093,
papayawhip: #FFEFD5,
peachpuff: #FFDAB9,
peru: #CD853F,
pink: #FFC0CB,
plum: #DDA0DD,
powderblue: #B0E0E6,
purple: #800080,
red: #FF0000,
rosybrown: #BC8F8F,
royalblue: #4169E1,
saddlebrown: #8B4513,
salmon: #FA8072,
sandybrown: #FAA460,
seagreen: #2E8B57,
seashell: #FFF5EE,
sienna: #A0522D,
silver: #C0C0C0,
skyblue: #87CEEB,
slateblue: #6A5ACD,
slategray: #708090,
snow: #FFFAFA,
springgreen: #00FF7F,
steelblue: #4682B4,
tan: #D2B48C,
teal: #008080,
thistle: #D8BFD8,
tomato: #FF6347,
turquoise: #40E0D0,
violet: #EE82EE,
wheat: #F5DEB3,
white: #FFFFFF,
whitesmoke: #F5F5F5,
yellow: #FFFF00,
yellowgreen: #9ACD32}marker: 标记样式 edgecolors: 轮廓颜色参数形式和color类似alpha: 透明度值在[0, 1]范围内1表示不透明0表示透明linewidths: 线宽表示标记边缘的宽度默认是facecmap: 自定义色彩盘实际上就是一个三列的矩阵shape为 [N,3][N, 3][N,3],一个实例可以参考matplotlib使用自己想要的color map
annotate(s, xy, *args, **kwargs) 函数用于在图形上给数据点添加文本注解而且支持带箭头的划线工具方便我们在合适的位置添加描述信息。具体的内容可以参考Matplotlib中的annotate用法 参数
s: 注释文本中的内容color: 注释文本的颜色xy: 被注释的坐标点二维元组形式(x, y)xytext: 注释文本的坐标点也是二维元组(x, y)形式xycoords: 被注释的坐标系属性允许输入的值如下图: textcoords: 注释文本的坐标系属性默认与xycoords属性值相同除了允许输入xycoords的属性值还允许输入以下两种 arrowprops: 用于标注的箭头的样式这个参数是一个dict类型的数据。如果该属性为空则会在注释文本和被注释点之间画一个箭头。箭头的样式可以通过 arrowstyle 关键字来指定默认的可选类型 arrowstyle 关键字包含的默认类型包括以下 如果没有 arrowstyle 关键字则箭头的样式可以由以下关键字指定(注意 arrowstyle 和以下关键字不能同时存在) 箭头、坐标点和注释文本之间的关系属性包括如下图。其中connectionstyle属性用于控制注释点和注释文本之间的连接线的属性比如弧度角度之类的信息这里还不是太清楚。
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x np.linspace(-np.pi, np.pi, 256,
endpointTrue)
c, s np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
# 调整图像的脊柱
ax gca()
ax.spines[right].set_color(none)
ax.spines[top].set_color(none)
ax.xaxis.set_ticks_position(bottom)
ax.spines[bottom].set_position((data, 0))
ax.yaxis.set_ticks_position(left) # 选定y轴
ax.spines[left].set_position((data, 0))
# 在2*np.pi/3的位置给两条函数曲线加上一个注释
t 2 * np.pi / 3
plt.plot([t, t], [0, np.cos(t)], colorblue,
linewidth2.5,linestyle -)
scatter([t, ], [np.cos(t), ], 50, colorblue)
annotate(r$\sin(\frac{2\pi}{3})\frac{\sqrt{3}}
{2}$,
xy(t, np.sin(t)), xycoordsdata,
xytext(10, 30), textcoordsoffset
points, fontsize16,
arrowpropsdict(arrowstyle-,
connectionstylearc3,rad.2))
plot([t,t],[0,np.sin(t)], color red,
linewidth2.5, linestyle -)
scatter([t,],[np.sin(t),], 50, color red)
annotate(r$\cos(\frac{2\pi}{3})-\frac{1}
{2}$,colorgreen,
xy(t, np.cos(t)), xycoordsdata,
xytext(-90, -50), textcoordsoffset
points, fontsize16,
arrowpropsdict(arrowstyle-,
connectionstylearc3,rad.2)) # arc, angle,
armA, rad
show()9 子图
图像的属性包括以下几个
from pylab import *subplot()函数的参数中除最后一维的其他维表示子图的大小最
后一维表示当前子图在图像中的位置如下实例在2*2的网格里
第四个子图为(2, 2, 4)
创建横跨多个位置的子图用gridspec实现添加多个固定大小的子图
fig plt.figure(figsize(10, 10), dpi80,
facecolorred)
ax1 fig.add_subplot(2, 2, 1)
ax2 fig.add_subplot(2, 2, 4)
ax1.plot() .
ax2.plot() .subplot(2,2,1)
xticks([]), yticks([])
text(0.5,0.5,
subplot(2,2,1),hacenter,vacenter,size20,
alpha.5)
subplot(2,2,2)
xticks([]), yticks([])
text(0.5,0.5,
subplot(2,2,2),hacenter,vacenter,size20,
alpha.5)
subplot(2,2,3)
xticks([]), yticks([])
text(0.5,0.5,
subplot(2,2,3),hacenter,vacenter,size20,
alpha.5)
subplot(2,2,4)
xticks([]), yticks([])
text(0.5,0.5,
subplot(2,2,4),hacenter,vacenter,size20,
alpha.5)
# savefig( ./figures/subplot-grid.png, dpi64)
show()from pylab import *
import matplotlib.gridspec as gridspec
# gridspec的用法可以使图像横跨多个坐标
G gridspec.GridSpec(3, 3)
axes_1 subplot(G[0, :])
xticks([]), yticks([])
text(0.5,0.5, Axes
1,hacenter,vacenter,size24,alpha.5)
axes_2 subplot(G[1,:-1])
xticks([]), yticks([])
text(0.5,0.5, Axes
2,hacenter,vacenter,size24,alpha.5)
axes_3 subplot(G[1:, -1])
# 确定了这个子图的位置之后就可以直接在上面画图直到创建了
下个新的子图
x np.linspace(-np.pi, np.pi, 256,
endpointTrue)
c, s np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
#xticks([]), yticks([])
#text(0.5,0.5, Axes
3,hacenter,vacenter,size24,alpha.5)
axes_4 subplot(G[-1,0])
xticks([]), yticks([])text()函数用于在图像上的特定位置加上一些文本用于注释text(0.5,0.5, Axes
4,hacenter,vacenter,size24,alpha.5)
axes_5 subplot(G[-1,-2])
xticks([]), yticks([])
text(0.5,0.5, Axes
5,hacenter,vacenter,size24,alpha.5)
#plt.savefig( ./figures/gridspec.png, dpi64)
show()from pylab import *使用axes()函数来确定当前子图的位置和大小参数为一个
list[x, y, width, height]
x,y为当前子图的左下角坐标位置width为子图的宽度
height为子图的高度axes([0.1,0.1,0.8,0.8])
xticks([]), yticks([])
text(0.6,0.6,
axes([0.1,0.1,.8,.8]),hacenter,vacenter,s
ize20,alpha.5)
axes([0.2,0.2,.3,.3])
x np.linspace(-np.pi, np.pi, 256,
endpointTrue)
c, s np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
# xticks([]), yticks([])
# text(0.5,0.5,
axes([0.2,0.2,.3,.3]),hacenter,vacenter,s
ize16,alpha.5)
# plt.savefig( ./figures/axes.png,dpi64)
show()from pylab import *
axes([0.1,0.1,.5,.5])
xticks([]), yticks([])
text(0.1,0.1,
axes([0.1,0.1,.5,.5]),haleft,vacenter,siz
e16,alpha.5)
axes([0.2,0.2,.5,.5])
xticks([]), yticks([])
text(0.1,0.1,
axes([0.2,0.2,.5,.5]),haleft,vacenter,siz
e16,alpha.5)
axes([0.3,0.3,.5,.5])
x np.linspace(-np.pi, np.pi, 256,
endpointTrue)
c, s np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
# xticks([]), yticks([])
# text(0.1,0.1,
axes([0.3,0.3,.5,.5]),haleft,vacenter,siz
e16,alpha.5)
axes([0.4,0.4,.5,.5])
xticks([]), yticks([])
text(0.1,0.1,
axes([0.4,0.4,.5,.5]),haleft,vacenter,siz
e16,alpha.5)
# plt.savefig( ./figures/axes-2.png,dpi64)
show()最后
这里整理了完整的文档与技巧有需要的同学看下面另外如果没有美赛经验想要获奖欢迎咨询哦~