男女做暧视频网站免费,品牌vi设计内容,邯郸网站设计哪家专业,游民星空是谁做的网站Matplotlib绘图技巧#xff08;二#xff09; 写在前面2. 函数间区域填充函数fill_between()和fill()参数#xff1a; 3. 散点图 scatter4. 直方图 hist5. 条形图 bar5.1 一个数据样本的条形图参数#xff1a; 5.2 多个数据样本进行对比的直方图5.3 水平条形图参数 5.4 绘制… Matplotlib绘图技巧二 写在前面2. 函数间区域填充函数fill_between()和fill()参数 3. 散点图 scatter4. 直方图 hist5. 条形图 bar5.1 一个数据样本的条形图参数 5.2 多个数据样本进行对比的直方图5.3 水平条形图参数 5.4 绘制不同数据样本进行对比的水平条形图5.5 堆叠条形图 6. 等高线图 meshgrid 写在前面
前面我们讲过好的图表在论文写作中是相当重要的这里学姐为继续为大家分享一些Matplotlib快速入门内容以及论文绘图的技巧帮助大家快速学习绘图。这里整理了完整的文档与技巧有需要的同学看文章最后另外如果没有美赛经验想要获奖欢迎咨询哦~
2. 函数间区域填充函数fill_between()和fill() plt.fill_between(x, y1, y2, where color, alpha) 参数
x: x轴坐标值为一个listy1: 第一条曲线对应的函数值为x对应的函数值listy2: 第二条曲线对应的函数值为x对应的函数值listwhere: 条件表达式用于判断某个区间内是否进行填充如果判断为True则进行填充否则不填充color: 填充区域的颜色alpha: 填充区域的透明度1表示不透明0表示完全透明 一些实例可以参考基于matplotlib的数据可视化图形填充函数fill和fill_between
import numpy as np
import matplotlib.pyplot as plt
n 256
X np.linspace(-np.pi,np.pi,n,endpointTrue)
Y np.sin(2*X)
plt.axes([0.025,0.025,0.95,0.95])
plt.plot (X, Y1, colorblue, alpha1.00)
plt.fill_between(X, 1, Y1, colorblue,
alpha.25)
plt.plot (X, Y-1, colorblue, alpha1.00)
plt.fill_between(X, -1, Y-1, (Y-1) -1,
colorblue, alpha.25)
plt.fill_between(X, -1, Y-1, (Y-1) -1,
colorred, alpha.25)
plt.xlim(-np.pi,np.pi), plt.xticks([])
plt.ylim(-2.5,2.5), plt.yticks([])
# savefig( ./figures/plot_ex.png,dpi48)
plt.show()3. 散点图 scatter
scatter() 前面已经详细讲过可以看上一篇文章哦。
import numpy as np
import matplotlib.pyplot as plt
n 1024
X np.random.normal(0,1,n)
Y np.random.normal(0,1,n)
T np.arctan2(Y,X) # T中包含了数据点的颜色到当前
colormap的映射值
# print(T.shape)
plt.axes([0.025,0.025,0.95,0.95])
plt.scatter(X,Y, s75, cT, alpha.5)
plt.xlim(-1.5,1.5), plt.xticks([])
plt.ylim(-1.5,1.5), plt.yticks([])
# savefig( ./figures/scatter_ex.png,dpi48)
plt.show()4. 直方图 hist
直方图和条形图外观上看上去差不多但概念和实现上完全不同需要加以区分
条形图: 每个条形表示一个类别条形的高度表示类别的频数。直方图: 用长条形的面积表示频数宽度表示数据范围高度为频数宽度\frac{频数}{宽度} 宽度频数
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
# 设置matplotlib正常显示中文和负号
matplotlib.rcParams[font.sans-serif][SimHei]
# 用黑体显示中文
matplotlib.rcParams[axes.unicode_minus]False
# 正常显示负号
# 随机生成10000,服从正态分布的数据
data np.random.randn(10000)绘制直方图
data:必选参数绘图数据
bins:直方图的长条形数目可选项默认为10
normed:是否将得到的直方图向量归一化可选项默认为0代表
不归一化显示频数。normed1表示归一化显示频率。
facecolor:长条形的颜色
edgecolor:长条形边框的颜色
alpha:透明度plt.hist(data, bins40, normed0,
facecolorblue, edgecolorblack, alpha0.7)
# 显示横轴标签
plt.xlabel(区间)
# 显示纵轴标签
plt.ylabel(频数/频率)
# 显示图标题
plt.title(频数/频率分布直方图)
plt.show()5. 条形图 bar
5.1 一个数据样本的条形图 bar() 参数
x: 长条形中的横坐标点listleft: 长条形左边沿x轴坐标listheight: 长条形对应每个横坐标的高度值width: 长条形的宽度默认值为0.8label: 每个数据样本对应的label后面调用legend()函数可以显示图例alpha: 透明度
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,
edgecolorwhite)
bar(X, -Y2, facecolor#ff9999,
edgecolorwhite)
#xticks(X)
for x,y in zip(X,Y1):
text(x, y0.05, %.2f % y, hacenter, va
bottom)
for x, y in zip(X, -Y2)
text(x, y-0.15, %.2f% y, hacenter,
vabottom)
ylim(-1.25,1.25)
show()
123456789101112131415161718195.2 多个数据样本进行对比的直方图
import matplotlib.pyplot as plt
import matplotlib多个数据样本进行对比时要注意每个数据样本对应的颜色对每
个条形的注释文本设置和横纵坐标的设置# 设置中文字体和负号正常显示
matplotlib.rcParams[font.sans-serif]
[SimHei]
matplotlib.rcParams[axes.unicode_minus] False
label_list [2014, 2015, 2016, 2017] #
横坐标刻度显示值
num_list1 [20, 30, 15, 35] # 纵坐标值1
num_list2 [15, 30, 40, 20] # 纵坐标值2
x range(len(num_list1))
# 绘制条形图
rects1 plt.bar(x, heightnum_list1, width0.4,
alpha0.5, colorred, label部门一)
rects2 plt.bar([i0.4 for i in x],
heightnum_list2, width0.4, colorgreen,
label部门二)
# 设置y轴属性
plt.ylim(0, 50)
plt.ylabel(数量)
# 设置x轴属性
plt.xticks([index0.2 for index in x],
label_list)
plt.xlabel(年份)
plt.title(某某公司)
plt.legend()
# 显示文本
for rect in rects1:
height rect.get_height()
plt.text(rect.get_x() rect.get_width() / 2,
height 1, str(height), hacenter,
vabottom)
for rect in rects2:
height rect.get_height()
plt.text(rect.get_x() rect.get_width() / 2,
height 1, str(height), hacenter,
vabottom)
plt.show()5.3 水平条形图 bar(y, width, height, left, *, align‘center’, *kwargs) 参数
y: y轴坐标值listleft: 条形的左边沿对应的横坐标即从这个点开始计算条形的宽度width: 每个y轴坐标值对应的条形的宽度listheight: 条形的高度在水平条形图中条形的高度都是固定的。align: center或者edge如果是center则坐标点在条形的中间如果是edge则坐标点对应条形的底部color: 填充色edgecolor: 条形的边缘线条颜色linewidth: 条形的边缘线条线宽
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams[font.sans-serif]
[SimHei]
matplotlib.rcParams[axes.unicode_minus] False
price [39.5, 39.9, 45.4, 38.9, 33.34]
# 绘制水平条形图
plt.barh(range(5), price, height0.7,
colorsteelblue, alpha0.5)
plt.yticks(range(5), [亚马逊, 当当网, 中国图书
网, 京东, 天猫])
plt.xlim(30, 47)
plt.xlabel(价格)
plt.title(不同平台图书价格)
for x, y in enumerate(price):
plt.text(y0.2, x-0.1, %s%y)
plt.show()5.4 绘制不同数据样本进行对比的水平条形图
import matplotlib.pyplot as plt
import matplotlib
# 设置中文字体和负号正常显示
matplotlib.rcParams[font.sans-serif]
[SimHei]
matplotlib.rcParams[axes.unicode_minus] False
label_list [2014, 2015, 2016, 2017]
num_list1 [20, 30, 15, 35]
num_list2 [15, 33, 40, 20]
y range(1, len(num_list1)1)
y [index*1.5 for index in y]
plt.barh(y, num_list1, height0.4,
colorsteelblue, alpha0.5)
plt.barh([index-0.4 for index in y], num_list2,
height0.4, colorred, alpha0.5)
plt.yticks([index-0.2 for index in y],
label_list)
plt.ylabel(年份)
plt.xlim(0, 45)
plt.xlabel(数量)
for x, y1 in zip(num_list1, y):
plt.text(x0.8, y1-0.1, str(x), hacenter,
vabottom)
for x, y2 in zip(num_list2, y):
plt.text(x0.8, y2-0.5, str(x), hacenter,
vabottom)
plt.show()5.5 堆叠条形图
import matplotlib.pyplot as plt
x [52, 69, 58, 12, 39, 75]
y [56, 15, 84, 65, 45, 48]
index np.arange(len(x))
width 0.3
plt.bar(index, heightx, widthwidth,
colorblue, labelux, alpha0.5)
plt.bar(index, heighty, widthwidth,
colorgold, labeluy) # 第二个图不能设置alpha
值不然透明的两个条形会出现重叠
plt.xlabel(index)
plt.ylabel(x/y)
plt.title(barplot stack, fontsize20,
colorgray)
plt.legend(locbest)
plt.show()6. 等高线图 meshgrid X, Y np.meshgrid(X, Y) 假设X为m维向量Y为n维向量 将X作为一行对这一行复制n次得到m*n维的矩阵先将Y转秩再将转秩后的Y作为一列对这一列复制m次得到m*n维的矩阵
这样做可以使得X和Y中的每两个值互相都可以组成一个坐标点(xi ,y j ) (x{i}, y{j}) (xi,yj)在将这些坐标点作为输入通过一个映射函数 f ( x ) f(x) f(x)求值就可以得到一个三维图形。
例如 X [ 1 , 2 , 3 ] , Y [ 4 , 5 , 6 , 7 ] X [1,2,3], Y[4, 5, 6, 7] X[1,2,3],Y[4,5,6,7], 则 X , Y n p . m e s h g r i d ( X , Y ) X,Ynp.meshgrid(X, Y) X,Ynp.meshgrid(X,Y)得到的结果为
X [ [ 1 , 2 , 3 ] , [ 1 , 2 , 3 ] , [ 1 , 2 , 3 ] , [ 1 , 2 , 3 ] ] X [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]] X[[1,2,3],[1,2,3], [1,2,3],[1,2,3]]
Y [ [ 4 , 4 , 4 ] , [ 5 , 5 , 5 ] , [ 6 , 6 , 6 ] , [ 7 , 7 , 7 ] ] Y [[4, 4, 4], [5, 5, 5], [6, 6, 6], [7, 7, 7]] Y[[4,4,4], [5,5,5],[6,6,6],[7,7,7]] plt.contour() 这个函数用于绘制等高线图
import matplotlib.pyplot as plt
def f(x,y): return (1-x/2x *5y *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)
#print(X,----, Y)
plt.contourf(X, Y, f(X,Y), 8, alpha.75,
cmapjet)
C plt.contour(X, Y, f(X,Y), 8, colorsblack)
show()