xcanvas,如何高效地使用Matplotlib?
全文共2153字,预计学习时长4分钟或更长
用Matplotlib模拟雨
动画是呈现各种现象的有趣方式。在描述像过去几年的股票价格、过去十年的气候变化、季节性和趋势等时间序列数据时,与静态图相比,动画更能说明问题。因为,从动画中,我们可以看到特定参数是如何随时间而变化的。
上图是模拟雨的图像。此图由Matplotlib绘图库绘制而成,该绘图库常常被认为是python可视化数据包的原始数据组。Matplotlib通过50个分散点的比例和不透明度来模拟雨滴落在平面上的情景。如今,Plotly、Bokeh、Altair等一系列可视化工具均为Python中强大的可视化工具。这些库可实现最先进的动画和交互动作。但是,本文重点在于研究数据库的一个方面——动画。同时,我们也将关注实现动画的方法。
概述Matplotlib是一个 Python 的 2D绘图库,也是Python中最受欢迎的绘图数据库。大多数人在踏上数据可视化之旅时,都是首选Matplotlib。这是因为它可简单地生成绘图,直方图、功率谱、条形图、错误图、散点图等。不仅如此,它还无缝连接了Pandas、Seaborn等数据库,甚至创建出更为复杂的可视化数据。
Matplotlib有几大优点:
· 其构造和MATLAB(矩阵实验室)类似,所以两者间易于切换
· 包含许多后端渲染
· 可以快速生成绘图
· 已存在数十年以上,因此,有大量的用户基础
但是,Matplotlib除了这些优点之外,也有许多不足之处:
· Matplotlib常常不可避免地存在冗繁的API(应用程序编程接口)
· 有时默认样式设计不如人意
· 对web和交互式图表的支持较低
· 处理大型及复杂的数据时速度常常较慢
对于进修者来说,Datacamp中有关于Matplotlib的必备知识可以帮助提高基础知识。
动画Matplotlib的动画基类负责处理动画部分。其可提供构建动画功能的框架。有两个主要接口来实现此功能:
FuncAnimation:通过反复触发func.功能创建动画。
ArtistAnimation:利用已定义的Artist对象创建动画。
但是,在上述两种接口中,FuncAnimation更为方便。我们专注于FuncAnimation工具的研究。
要求
· 安装numpy和matplotlib模块。
· 安装符合要求的 ffmpeg 或imagemagick方可将动画以mp4或gif的形式储存。
一切准备就绪,就可以开始在JupyterNotebooks中制作第一个基本动画了。本文的访问密码可在GithubRepository中获取。
基本动画:移动的正弦波
在电脑中,利用FuncAnimation创建正弦波的基本动画。动画源代码可在Matplotlib动画教程中获取。先来看看输出代码,然后将其破译,并了解其中奥妙。
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation
plt.style.use('seaborn-pastel')
fig = plt.figure()
ax = plt.axes(xlim=(0, 4), ylim=(-2, 2))
line, = ax.plot([], [], lw=3)
def init():
line.set_data([], [])
return line,
def animate(i):
x = np.linspace(0, 4, 1000)
y = np.sin(2 * np.pi * (x - 0.01 * i))
line.set_data(x, y)
return line,
anim = FuncAnimation(fig, animate, init_func=init,
frames=200, interval=20, blit=True)
anim.save('sine_wave.gif', writer='imagemagick')
· 在第7行到第9行,简单地创建一个图形窗口,图中只有一个轴。然后,创建无内容的行对象,其本质上是在动画中可修改的对象。稍后用数据来填充行对象。
· 在第11行到13行,创建init函数,触发动画发生。此函数初始化数据,并限定轴范围。
· 最后,在第14行到第18行,定义动画函数,该函数以帧数(i)作为参数,并创建一个正弦波(或任意其他的动画),而其移动取决于i的值。此函数返回一个已修改的plot对象的元组,告知动画框架plot中哪些部分需要动画化。
· 在第20 行,创建实际的动画对象。Blit参数确保只重新绘制已更改的部分。
· 这是在Matplolib中创建动画的基本知识。只需对代码稍作调整,就可以创建出一些有趣的可视化。接下来看看其中一些可视化的例子吧。
一个不断扩大的线圈同样,在GreeksforGreeks中,有一个创建图形的好例子。我们一起在animation模块的帮助下创造一个缓慢展开的活动线圈。该代码和正弦波图极为相似,只有一些小调整。
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
plt.style.use('dark_background')
fig = plt.figure()
ax = plt.axes(xlim=(-50, 50), ylim=(-50, 50))
line, = ax.plot([], [], lw=2)
# initialization function
def init():
# creating an empty plot/frame
line.set_data([], [])
return line,
# lists to store x and y axis points
xdata, ydata = [], []
# animation function
def animate(i):
# t is a parameter
t = 0.1*i
# x, y values to be plotted
x = t*np.sin(t)
y = t*np.cos(t)
# appending new points to x, y axes points list
xdata.append(x)
ydata.append(y)
line.set_data(xdata, ydata)
return line,
# setting a title for the plot
plt.title('Creating a growing coil with matplotlib!')
# hiding the axis details
plt.axis('off')
# call the animator
anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=500, interval=20, blit=True)
# save the animation as mp4 video file
anim.save('coil.gif',writer='imagemagick')
实时更新图绘制股票数据、传感器数据等其他与时间相关的动态数据时,实时更新图就会派上用场。我们绘制一个基图,在更多的数据被输入系统后,基图就会自动更新。现在,来绘制某假定公司某月内的股价图。
#importing libraries
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig = plt.figure()
#creating a subplot
ax1 = fig.add_subplot(1,1,1)
def animate(i):
data = open('stock.txt','r').read()
lines = data.split('n')
xs = []
ys = []
for line in lines:
x, y = line.split(',') # Delimiter is comma
xs.append(float(x))
ys.append(float(y))
ax1.clear()
ax1.plot(xs, ys)
plt.xlabel('Date')
plt.ylabel('Price')
plt.title('Live graph with matplotlib')
ani = animation.FuncAnimation(fig, animate, interval=1000)
plt.show()
现在,打开终端并运行python文件,可以得到如下所示可自动更新的图表:
其更新的时间间隔是1000毫秒或一秒。
3D图中的动画创建3D图形十分常见,但是如果可以将这些图形视角动画化呢?其方法是,在改变相机视图后,利用生成后的所有图像来创建动画。而在PythonGraph Gallery(Python图形库)中有个专门的部分可以完成这类工作。
首先创建一个名为volcano的文件夹,放在与记事本相同的目录中。然后,将所有会用于动画化的图形储存在该文件夹中。
# library
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
# Get the data (csv file is hosted on the web)
url = 'https://python-graph-gallery.com/wp-content/uploads/volcano.csv'
data = pd.read_csv(url)
# Transform it to a long format
df=data.unstack().reset_index()
df.columns=["X","Y","Z"]
# And transform the old column name in something numeric
df['X']=pd.Categorical(df['X'])
df['X']=df['X'].cat.codes
# We are going to do 20 plots, for 20 different angles
for angle in range(70,210,2):
# Make the plot
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_trisurf(df['Y'], df['X'], df['Z'], cmap=plt.cm.viridis, linewidth=0.2)
ax.view_init(30,angle)
filename='Volcano/Volcano_step'+str(angle)+'.png'
plt.savefig(filename, dpi=96)
plt.gca()
这样就可以在Volcano文件夹中创建多个PNG文件。接着,利用ImageMagick(一个创建、编辑、合成图片的软件)将这些PNG文件转化成动画。打开终端并导向Volcano文件夹,输入以下指令:
convert -delay 10 Volcano*
.pnganimated_volcano.gif
利用Celluloid模块动画化Celluloid是python中的一个模块,其在matplotlib中可简化创建动画的进程。这个库创建一个matplotlib图并从中创建相机。然后,重新启用该图,并在创建每帧动画后,用上述相机拍快照。最后,利用所有捕捉到的帧创建动画。
安装
pip install celluloid
下面是利用Celluloid模块的例子:
极小值
from matplotlib import pyplot as plt
from celluloid import Camera
fig = plt.figure()
camera = Camera(fig)
for i in range(10):
plt.plot([i] * 10)
camera.snap()
animation = camera.animate()
animation.save('celluloid_minimal.gif', writer = 'imagemagick')
子图
import numpy as np
from matplotlib import pyplot as plt
from celluloid import Camera
fig, axes = plt.subplots(2)
camera = Camera(fig)
t = np.linspace(0, 2 * np.pi, 128, endpoint=False)
for i in t:
axes[0].plot(t, np.sin(t + i), color='blue')
axes[1].plot(t, np.sin(t - i), color='blue')
camera.snap()
animation = camera.animate()
animation.save('celluloid_subplots.gif', writer = 'imagemagick')
图例
import matplotlib
from matplotlib import pyplot as plt
from celluloid import Camera
fig = plt.figure()
camera = Camera(fig)
for i in range(20):
t = plt.plot(range(i, i + 5))
plt.legend(t, [f'line {i}'])
camera.snap()
animation = camera.animate()
animation.save('celluloid_legends.gif', writer = 'imagemagick')
留言 点赞 关注
我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”
有哪些可以推荐给HTML5入门的教程或者资源啊?
HTML5教程
什么是HTML5?
在这里我不说一些特别难懂的语言,我这里简单的解释一下,如果你学过HTML,那么就是HTML4,HTML5是针对现有的版本进行了一些丰富,把一些原先常用的标签进行了统一,还添加了一些以前没有的新标签来满足更复杂的功能,像原先网页上面的音乐播放器,现在都不需要通过flash插件来实现,仅仅通过HTML5编写程序来实现,可以说HTML5的出现是一个很大的进步。
给大家介绍一个HTML5学习的技术社区:HTML5伴侣
HTML5现在的局限?
最大的一个局限就是还没有完全支持,支持HTML5的现代浏览器:
但是还有些浏览器不支持,比如IE9之前的版本。
有些东西需要HTML5来实现,但是不能保证用户用的浏览器都支持HTML5,所以有些功能需要保证兼容性,所以这也是限制HTML5的一个原因。
另外的一个因素就是HTML5在移动端的表现没有想象中优越,有很多的开发者在移动端做了很多尝试,尤其是在移动端开发游戏,在动画效果的实现上面,流畅度没有得到很好地的保证,不过随着移动设备的硬件越来越快,所以在以后HTML5在移动端的劣势会被掩盖,当然并不是所有的移动端设备表现的都不好,HTML5在IOS平台下的表现就很不错,已经可以成为企业开发的一个选择,相反android就不尽人意。
HTML5的优势
HTML5最好的一个优势就是跨平台,如果你是开发者,你只要写一套程序就可以在任何地方运行,PC,移动端都可以,这个大大的节约了开发成本。
另外一个优点就是标准的统一,开发人员不需要再头疼浏览器的兼容性,不过在这之前得保证浏览器支持HTML5。
最后一个优点是站在用户的角度,在移动端你想要用一个APP,你得去下载,每次APP更新或者改版,用户很反感,用HTML5开发的只需要借助移动端浏览器打开,不需要用户下载,打开就可以直接用,用户头疼的更新问题也不用担心了。
以上都是我的废话,希望您不要对此感到反感,接下来我就正式来介绍HTML5。
HTML5新特性:
1.添加了canvas元素,这个元素可以帮助我们实现更炫更棒的动画效果,HTML5游戏就是通过这个canvas来实现的场景的渲染。
2.媒介元素,如video和audio元素。
3.本地离线存储的支持。
4.原先的标签更加分散和清晰,比如article,footer,header,nav等等。
5.新的表单元素属性,比如data,time,Email,url,search等。
HTML5视频
很多视频的网站都是通过flash插件来播放视频的,但是HTML5提供了对视频播放的支持。
Ogg = 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件
MPEG4 = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件
WebM = 带有 VP8 视频编码和 Vorbis 音频编码的 WebM 文件
标签使用
1 <video controls="controls">
2 <!--
3 ogg文件可以用于适用于Firefox、Opera 以及 Chrome 浏览器
4 要确保适用于 Safari 浏览器,视频文件必须是 MPEG4 类型。
5 video 元素允许多个 source 元素。
6 <video width="320" height="240" controls="controls">
7 <source src="movie.ogg" type="video/ogg">
8 <source src="movie.mp4" type="video/mp4">
9 Your browser does not support the video tag.
10 </video>
11 -->
12 <source src="video/first.mp4">
13 浏览器不支持html5视频功能
14 </video>
IE9一下不支持video,IE9支持了MPEG4的video元素。
Video的属性选择
HTML5音频
HTML5支持音频(音乐)的标准,通过audio元素。
音频格式:
要确保适用于 Safari 浏览器,音频文件必须是 MP3 或 Wav 类型。
标签使用:
<audio controls="controls">
<source src="song.ogg" type="audio/ogg">
<source src="song.mp3" type="audio/mpeg">
Your browser does not support the audio tag.
</audio>
IE8 不支持 audio 元素。在 IE 9 中,将提供对 audio 元素的支持。
HTML5 Canvas
Canvas元素可以实现绘制图形动画。
Canvas可以说是HTML5里面最重要的一个标签了,这个标签的出现让游戏开发更加容易,不过Canvas需要配合JavaScript使用。
元素创建
规定元素的 id、宽度和高度:
<canvas id="myCanvas" width="200" height="100"></canvas>
这个地方为什么要定义id属性呢?如果你对JS的DOM编程有一定了解的话,你就知道通过ID属性可以获取一个元素对象,从而可以通过JS来对元素进行操作。
如果你对DOM不熟悉的话,建议你先去看下相关的学习资料。
这里给你一个DOM学习的电子书下载链接:
JavaScript控制Canvas
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
cxt.fillStyle="#FF0000";
cxt.fillRect(0,0,150,75);
</script>
JavaScript 使用 id 来寻找 canvas 元素:
var c=document.getElementById("myCanvas");
然后,创建 context 对象:
var cxt=c.getContext("2d");
getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
下面的两行代码绘制一个红色的矩形:
cxt.fillStyle="#FF0000";
cxt.fillRect(0,0,150,75);
fillStyle 方法将其染成红色,fillRect 方法规定了形状、位置和尺寸。
上面的 fillRect 方法拥有参数 (0,0,150,75)。
意思是:在画布上绘制 150x75 的矩形,从左上角开始 (0,0)。
如下图所示,画布的 X 和 Y 坐标用于在画布上对绘画进行定位。
下面我在 canvas 元素上进行绘画的更多实例:
实例 - 线条
通过指定从何处开始,在何处结束,来绘制一条线:
JavaScript 代码:
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
cxt.moveTo(10,10);
cxt.lineTo(150,50);
cxt.lineTo(10,50);
cxt.stroke();
</script>
canvas 元素:
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;">
Your browser does not support the canvas element.
</canvas>
实例 - 圆形
通过规定尺寸、颜色和位置,来绘制一个圆:
JavaScript 代码:
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
cxt.fillStyle="#FF0000";
cxt.beginPath();
cxt.arc(70,18,15,0,Math.PI*2,true);
cxt.closePath();
cxt.fill();
</script>
canvas 元素:
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;">
Your browser does not support the canvas element.
</canvas>
实例 - 渐变
使用您指定的颜色来绘制渐变背景:
JavaScript 代码:
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
var grd=cxt.createLinearGradient(0,0,175,50);
grd.addColorStop(0,"#FF0000");
grd.addColorStop(1,"#00FF00");
cxt.fillStyle=grd;
cxt.fillRect(0,0,175,50);
</script>
canvas 元素:
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;">
Your browser does not support the canvas element.
</canvas>
实例 - 图像
把一幅图像放置到画布上:
JavaScript 代码:
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
var img=new Image()
img.src="flower.png"
cxt.drawImage(img,0,0);
</script>
canvas 元素:
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;">
Your browser does not support the canvas element.
</canvas>
你看我canvas相比较前几个标签来说,解释说明举例明显更多,这也说明canvas标签的重要性,希望你能好好学习这个标签。
HTML5 Web存储
在客户端存储数据
HTML5 提供了两种在客户端存储数据的新方法:
localStorage - 没有时间限制的数据存储
sessionStorage - 针对一个 session 的数据存储
之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。
在 HTML5 中,数据不是由每个服务器请求传递的,而是只有在请求时使用数据。它使在不影响网站性能的情况下存储大量数据成为可能。
对于不同的网站,数据存储于不同的区域,并且一个网站只能访问其自身的数据。
HTML5 使用 JavaScript 来存储和访问数据。
localStorage 方法
localStorage 方法存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用。
如何创建和访问 localStorage:
实例
<script type="text/javascript">
localStorage.lastname="Smith";
document.write(localStorage.lastname);
</script>
sessionStorage 方法
sessionStorage 方法针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。
如何创建并访问一个 sessionStorage:
实例
<script type="text/javascript">
sessionStorage.lastname="Smith";
document.write(sessionStorage.lastname);
</script>
HTML5 Input类型
HTML5 拥有多个新的表单输入类型。这些新特性提供了更好的输入控制和验证。
本章全面介绍这些新的输入类型:
1.email
2.url
3.number
4.range
5.Date pickers (date, month, week, time, datetime, datetime-local)
6.search
7.color
注释:Opera 对新的输入类型的支持最好。不过您已经可以在所有主流的浏览器中使用它们了。即使不被支持,仍然可以显示为常规的文本域。
Input 类型 - email
email 类型用于应该包含 e-mail 地址的输入域。
在提交表单时,会自动验证 email 域的值。
实例
E-mail: <input type="email" name="user_email" />
提示:iPhone 中的 Safari 浏览器支持 email 输入类型,并通过改变触摸屏键盘来配合它(添加 @ 和 .com 选项)。
Input 类型 - url
url 类型用于应该包含 URL 地址的输入域。
在提交表单时,会自动验证 url 域的值。
实例
Homepage: <input type="url" name="user_url" />
提示:iPhone 中的 Safari 浏览器支持 url 输入类型,并通过改变触摸屏键盘来配合它(添加 .com 选项)。
Input 类型 - number
number 类型用于应该包含数值的输入域。
您还能够设定对所接受的数字的限定:
实例
Points: <input type="number" name="points" min="1" max="10" />
请使用下面的属性来规定对数字类型的限定:
属性
值
描述
max
number
规定允许的最大值
min
number
规定允许的最小值
step
number
规定合法的数字间隔(如果 step="3",则合法的数是 -3,0,3,6 等)
value
number
规定默认值
提示:iPhone 中的 Safari 浏览器支持 number 输入类型,并通过改变触摸屏键盘来配合它(显示数字)。
Input 类型 - range
range 类型用于应该包含一定范围内数字值的输入域。
range 类型显示为滑动条。
您还能够设定对所接受的数字的限定:
实例
<input type="range" name="points" min="1" max="10" />
请使用下面的属性来规定对数字类型的限定:
属性
值
描述
max
number
规定允许的最大值
min
number
规定允许的最小值
step
number
规定合法的数字间隔(如果 step="3",则合法的数是 -3,0,3,6 等)
value
number
规定默认值
Input 类型 - Date Pickers(日期选择器)
HTML5 拥有多个可供选取日期和时间的新输入类型:
15 date - 选取日、月、年
16 month - 选取月、年
17 week - 选取周和年
18 time - 选取时间(小时和分钟)
19 datetime - 选取时间、日、月、年(UTC 时间)
20 datetime-local - 选取时间、日、月、年(本地时间)
下面的例子允许您从日历中选取一个日期:
实例
Date: <input type="date" name="user_date" />
Input里面的类型新增的属性虽然多了一些,但是大多都很简单,和原先的text,password都是一样的道理。
HTML5表单元素
HTML5 拥有若干涉及表单的元素和属性。
datalist 元素
datalist 元素规定输入域的选项列表。
列表是通过 datalist 内的 option 元素创建的。
如需把 datalist 绑定到输入域,请用输入域的 list 属性引用 datalist 的 id:
实例
Webpage: <input type="url" list="url_list" name="link" />
<datalist id="url_list">
<option label="W3School" value="http://www.W3School.com.cn" />
<option label="Google" value="http://www.google.com" />
<option label="Microsoft" value="http://www.microsoft.com" />
</datalist>
提示:option 元素永远都要设置 value 属性。
keygen 元素
keygen 元素的作用是提供一种验证用户的可靠方法。
keygen 元素是密钥对生成器(key-pair generator)。当提交表单时,会生成两个键,一个是私钥,一个公钥。
私钥(private key)存储于客户端,公钥(public key)则被发送到服务器。公钥可用于之后验证用户的客户端证书(client certificate)。
目前,浏览器对此元素的糟糕的支持度不足以使其成为一种有用的安全标准。
实例
<form action="demo_form.asp" method="get">
Username: <input type="text" name="usr_name" />
Encryption: <keygen name="security" />
<input type="submit" />
</form>
output 元素
output 元素用于不同类型的输出,比如计算或脚本输出:
实例
<output id="result" onforminput="resCalc()"></output>
HTML5表单属性
本章讲解涉及 <form> 和 <input> 元素的新属性。
新的 form 属性:
autocomplete
novalidate
新的 input 属性:
autocomplete
autofocus
form
form overrides (formaction, formenctype, formmethod, formnovalidate, formtarget)
height 和 width
list
min, max 和 step
multiple
pattern (regexp)
placeholder
Required
autocomplete 属性
autocomplete 属性规定 form 或 input 域应该拥有自动完成功能。
注释:autocomplete 适用于 <form> 标签,以及以下类型的 <input> 标签:text, search, url, telephone, email, password, datepickers, range 以及 color。
当用户在自动完成域中开始输入时,浏览器应该在该域中显示填写的选项:
实例
<form action="demo_form.asp" method="get" autocomplete="on">
First name: <input type="text" name="fname" /><br />
Last name: <input type="text" name="lname" /><br />
E-mail: <input type="email" name="email" autocomplete="off" /><br />
<input type="submit" />
</form>
注释:在某些浏览器中,您可能需要启用自动完成功能,以使该属性生效。
autofocus 属性
autofocus 属性规定在页面加载时,域自动地获得焦点。
注释:autofocus 属性适用于所有 <input> 标签的类型。
实例
User name: <input type="text" name="user_name" autofocus="autofocus" />
form 属性
form 属性规定输入域所属的一个或多个表单。
注释:form 属性适用于所有 <input> 标签的类型。
form 属性必须引用所属表单的 id:
实例
<form action="demo_form.asp" method="get" id="user_form">
First name:<input type="text" name="fname" />
<input type="submit" />
</form>
Last name: <input type="text" name="lname" form="user_form" />
注释:如需引用一个以上的表单,请使用空格分隔的列表。
表单重写属性
表单重写属性(form override attributes)允许您重写 form 元素的某些属性设定。
表单重写属性有:
21 formaction - 重写表单的 action 属性
22 formenctype - 重写表单的 enctype 属性
23 formmethod - 重写表单的 method 属性
24 formnovalidate - 重写表单的 novalidate 属性
25 formtarget - 重写表单的 target 属性
注释:表单重写属性适用于以下类型的 <input> 标签:submit 和 image。
实例
<form action="demo_form.asp" method="get" id="user_form">
E-mail: <input type="email" name="userid" /><br />
<input type="submit" value="Submit" />
<br />
<input type="submit" formaction="demo_admin.asp" value="Submit as admin" />
<br />
<input type="submit" formnovalidate="true" value="Submit without validation" />
<br />
</form>
注释:这些属性对于创建不同的提交按钮很有帮助。
height 和 width 属性
height 和 width 属性规定用于 image 类型的 input 标签的图像高度和宽度。
注释:height 和 width 属性只适用于 image 类型的 <input> 标签。
实例
<input type="image" src="img_submit.gif" width="99"height="99" />
list 属性
list 属性规定输入域的 datalist。datalist 是输入域的选项列表。
注释:list 属性适用于以下类型的 <input> 标签:text, search, url, telephone, email, date pickers, number, range 以及 color。
实例
Webpage: <input type="url" list="url_list" name="link" />
<datalist id="url_list">
<option label="W3Schools" value="http://www.w3school.com.cn" />
<option label="Google" value="http://www.google.com" />
<option label="Microsoft" value="http://www.microsoft.com" />
</datalist>
min、max 和 step 属性
min、max 和 step 属性用于为包含数字或日期的 input 类型规定限定(约束)。
max 属性规定输入域所允许的最大值。
min 属性规定输入域所允许的最小值。
step 属性为输入域规定合法的数字间隔(如果 step="3",则合法的数是 -3,0,3,6 等)。
注释:min、max 和 step 属性适用于以下类型的 <input> 标签:date pickers、number 以及 range。
下面的例子显示一个数字域,该域接受介于 0 到 10 之间的值,且步进为 3(即合法的值为 0、3、6 和 9):
实例
Points: <input type="number" name="points" min="0"max="10"step="3" />
multiple 属性
multiple 属性规定输入域中可选择多个值。
注释:multiple 属性适用于以下类型的 <input> 标签:email 和 file。
实例
Select images: <input type="file" name="img" multiple="multiple" />
novalidate 属性
novalidate 属性规定在提交表单时不应该验证 form 或 input 域。
注释:novalidate 属性适用于 <form> 以及以下类型的 <input> 标签:text, search, url, telephone, email, password, date pickers, range 以及 color.
实例
<form action="demo_form.asp" method="get" novalidate="true">
E-mail: <input type="email" name="user_email" />
<input type="submit" />
</form>
pattern 属性
pattern 属性规定用于验证 input 域的模式(pattern)。
模式(pattern) 是正则表达式。您可以在我们的 JavaScript 教程中学习到有关正则表达式的内容。
注释:pattern 属性适用于以下类型的 <input> 标签:text, search, url, telephone, email 以及 password。
下面的例子显示了一个只能包含三个字母的文本域(不含数字及特殊字符):
实例
Country code: <input type="text" name="country_code"
pattern="[A-z]{3}" title="Three letter country code" />
placeholder 属性
placeholder 属性提供一种提示(hint),描述输入域所期待的值。
注释:placeholder 属性适用于以下类型的 <input> 标签:text, search, url, telephone, email 以及 password。
提示(hint)会在输入域为空时显示出现,会在输入域获得焦点时消失:
实例
<input type="search" name="user_search" placeholder="Search W3School" />
required 属性
required 属性规定必须在提交之前填写输入域(不能为空)。
注释:required 属性适用于以下类型的 <input> 标签:text, search, url, telephone, email, password, date pickers, number, checkbox, radio 以及 file。
实例
Name: <input type="text" name="usr_name" required="required" />
这份简易的HTML5教程是为了新手准备,HTML5还有很大其他的更高级的东西,我在这里没有介绍,不过随着学习的深入,以后你肯定会接触到的,我在最后给大家展示一些HTML5开发的实例,包括游戏,应用以及各种demo。
HTML5开发的驴子跳游戏:
HTML5开发游戏场景:
HTML5和JS结合开发的植物大战僵尸:
HTML5的传奇还在继续,你现在是不是充满了热情,摩拳擦掌的想要试试HTML5具有什么样的魅力?那就快来学习吧,希望这份教程在你HTML5的启蒙道路有所帮助。
夏天短裤怎么穿出时尚感?
随着三伏天的逐渐来临,又到了大街上花式秀美腿的好节点,想清爽美腻还想方便好穿的任性出街?这个时候就到了我们牛仔短裤的Showtime时刻了,每个妹纸的衣柜里都人手一条,简单好穿还特别方便,美腿杀玩的飞起,简直没有不拥有它的任何理由!
作为夏季零差评的热门单品,选好适合的大热款进行合理搭配也很重要,毕竟谁都想成为潮流的风向标的同时穿出去还很搭调,作为街拍中的黄金搭配,牛仔短裤在今年已经被明星与博主们演绎了好几轮热潮,现在不妨先来看看她们的“牛仔大法”,去Get一下最新的时髦法则。
高腰基础款
首先第一个要说的就是高腰基础款,简单直接没有过多的花哨元素,沉稳又大气,很适合矮星人一族的少女,利用提升高腰线的法则来快速提升身体比例,一秒穿出大长腿的既视感,连增高鞋都不用买了!
上衣如果是偏修身的话,建议把上衣扎进短裤里,看起来飒爽又帅翻。
凯特·波茨沃斯 (Kate Bosworth) 用基础款短裤搭配白衬衫,增加爽朗利落气质,更加符合夏日里的凉爽和轻快。
“元气美少女”乔欣选择一件Oversize衬衫来搭配牛仔短裤,多了份惬意的玩味,高腰线的款式又巧妙地弥补了拖沓的感觉。
T恤+牛仔短裤这对经典组合很耐看,赵丽颖虽然个子不高,但利用高腰线也能瞬间长高5cm,大方秀出美腿,清爽又有活力。
艾玛·罗伯茨 (Emma Roberts) 作为出了名的“霍比特”女星,这款高腰牛仔短裤很适合她,再搭配一件迷彩外套,自带撩汉功能加持酷感。
磨边款
磨边款可算得上是今年短裤界的人气冠军,N多明星大咖都特别爱它,很随性但不随便,一点点的小Chic就可以充满时髦小心机,简约中透着个人风格。
坎蒂丝·斯瓦内普尔 (Candice Swanepoel) 用清爽的吊带来搭配磨边短裤,为性感加分使造型充满看点。
大幂幂对于磨边短裤也是无抵抗力的存在,多次街拍都有出镜,不管是露肩上衣还是条纹衬衫,都可以很好的搭配。
气质一直都是江疏影的代名词,淡蓝色牛仔短裤搭配一件同色系条纹衬衫,使色彩的结合更为和谐。
娜扎选择今年大热的人像T来搭配磨边短裤,可以在时髦度上为整体造型拔得先机,轻松减龄没商量。
心机露肉是夏日的吸睛诀窍,露肩、半露肩上衣都可以作为搭配磨边短裤的好帮手,多一点吸引力看起来更为诱惑。
黑色牛仔短裤自带冷酷气质,在天气微凉的时候,可以像茜宝一样,搭一件廓形外套来搭配,提升气场非常有回头率。
如果你是肌肉腿的话,这种露口袋款式的短裤可以修饰你的腿型,口袋的边缘用来弱化腿部肌肉线条,看起来腿型会更为纤细。
破洞款
说到破,肯定有群众联想到了乞丐服那种满是补丁的样子,非也非也,我们要破,就要破的高级,我们是放荡不羁爱自由而不是没钱买裤子,穿上一条破洞牛仔短裤,把洒脱的情怀发挥的淋漓尽致,看起来真的很有Feel。
这种有着流苏边带有撕裂破洞的牛仔裤,用来撑起造型颜值很适合,如果觉得正经穿衣好无趣,把T恤打个结就能营造帅气又随性的出行Look。
女星们都喜欢用这种大廓形的Oversize衬衫来搭配牛仔短裤,营造一种萌萌哒的效果,但是还是建议瘦小类型女生要谨慎选择,一不小心就能把你埋进去。
在夏天,拥有一件白色牛仔短裤,可以在视觉上拥有更多的清爽,带着一点撕裂效果更有范儿。
卷边款
卷边牛仔短裤算是比较低调款式了,整齐的折边少了一份张扬耀眼,多了一份简单别致,卷边设计加宽了腿部维度,比较适合腿部不是很粗壮的女生,让视觉空间看起来更加饱满立体。
短裤上可以带着一点点印花图案,用来增添趣味性来减弱正经沉闷的感觉。
徐璐这身表现得还算是中规中矩,黑色短裤用来耍酷,美腿用来抢镜。
如果你有一个性感的身材在造型上就会更出彩,一件V领无袖上衣搭配卷边牛仔短裤,恰到好处的性感刚刚好。
学习HTML5这一篇就够了吗?
<canvas> 是 HTML5 新增的,一个可以使用脚本(通常为JavaScript)在其中绘制图像的 HTML 元素。它可以用来制作照片集或者制作简单(也不是那么简单)的动画,甚至可以进行实时视频处理和渲染。
它最初由苹果内部使用自己MacOS X WebKit推出,供应用程序使用像仪表盘的构件和 Safari 浏览器使用。 后来,有人通过Gecko内核的浏览器 (尤其是Mozilla和Firefox),Opera和Chrome和超文本网络应用技术工作组建议为下一代的网络技术使用该元素。
Canvas是由HTML代码配合高度和宽度属性而定义出的可绘制区域。JavaScript代码可以访问该区域,类似于其他通用的二维API,通过一套完整的绘图函数来动态生成图形。
Mozilla 程序从 Gecko 1.8 (Firefox 1.5)开始支持 <canvas>, Internet Explorer 从IE9开始<canvas> 。Chrome和Opera 9+ 也支持 <canvas>。
怎么编程没用过可以举个例子吗谢谢?
如果你想在编程中使用半圆弧,可以使用数学库中的函数来绘制。以下是一个使用Python的turtle库绘制半圆弧的例子:
```python
import turtle
# 创建画布
canvas = turtle.Screen()
# 创建画笔
pen = turtle.Turtle()
# 绘制半圆弧
pen.circle(100, 180)
# 关闭画布
canvas.exitonclick()
```
在这个例子中,我们使用turtle库来绘制半圆弧。首先,我们创建了一个画布和一个画笔。然后,我们使用画笔的circle()函数来绘制半圆弧,其中第一个参数表示半径,第二个参数表示角度。在这个例子中,我们设置半径为100,角度为180,即绘制一个半径为100的半圆弧。
需要注意的是,不同的编程语言和库可能有不同的绘制半圆弧的函数和参数,具体使用方法需要根据所使用的编程语言和库来确定。
还没有评论,来说两句吧...