matplotlib 安装.pyplot.plot 怎么画x轴拉伸功能

Python使用matplotlib绘制动画的方法
作者:网海水手
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Python使用matplotlib绘制动画的方法,涉及matplotlib模块的常见使用技巧,需要的朋友可以参考下
本文实例讲述了Python使用matplotlib绘制动画的方法。分享给大家供大家参考。具体分析如下:
matplotlib从1.1.0版本以后就开始支持绘制动画
下面是几个的示例:
第一个例子使用generator,每隔两秒,就运行函数data_gen:
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig = plt.figure()
axes1 = fig.add_subplot(111)
line, = axes1.plot(np.random.rand(10))
#因为update的参数是调用函数data_gen,
#所以第一个默认参数不能是framenum
def update(data):
line.set_ydata(data)
return line,
# 每次生成10个随机数据
def data_gen():
while True:
yield np.random.rand(10)
ani = animation.FuncAnimation(fig, update, data_gen, interval=2*1000)
plt.show()
第二个例子使用list(metric),每次从metric中取一行数据作为参数送入update中:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
start = [1, 0.18, 0.63, 0.29, 0.03, 0.24, 0.86, 0.07, 0.58, 0]
metric =[[0.03, 0.86, 0.65, 0.34, 0.34, 0.02, 0.22, 0.74, 0.66, 0.65],
[0.43, 0.18, 0.63, 0.29, 0.03, 0.24, 0.86, 0.07, 0.58, 0.55],
[0.66, 0.75, 0.01, 0.94, 0.72, 0.77, 0.20, 0.66, 0.81, 0.52]
fig = plt.figure()
window = fig.add_subplot(111)
line, = window.plot(start)
#如果是参数是list,则默认每次取list中的一个元素,
#即metric[0],metric[1],...
def update(data):
line.set_ydata(data)
return line,
ani = animation.FuncAnimation(fig, update, metric, interval=2*1000)
plt.show()
第三个例子:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
# First set up the figure, the axis, and the plot element we want to animate
fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
line, = ax.plot([], [], lw=2)
# initialization function: plot the background of each frame
def init():
line.set_data([], [])
return line,
# animation function. This is called sequentially
# note: i is framenumber
def animate(i):
x = np.linspace(0, 2, 1000)
y = np.sin(2 * np.pi * (x - 0.01 * i))
line.set_data(x, y)
return line,
# call the animator. blit=True means only re-draw the parts that have changed.
anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=200, interval=20, blit=True)
#anim.save('basic_animation.mp4', fps=30, extra_args=['-vcodec', 'libx264'])
plt.show()
第四个例子:
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
# 每次产生一个新的坐标点
def data_gen():
t = data_gen.t
while cnt & 1000:
yield t, np.sin(2*np.pi*t) * np.exp(-t/10.)
data_gen.t = 0
fig, ax = plt.subplots()
line, = ax.plot([], [], lw=2)
ax.set_ylim(-1.1, 1.1)
ax.set_xlim(0, 5)
xdata, ydata = [], []
# 因为run的参数是调用函数data_gen,
# 所以第一个参数可以不是framenum:设置line的数据,返回line
def run(data):
# update the data
t,y = data
xdata.append(t)
ydata.append(y)
xmin, xmax = ax.get_xlim()
if t &= xmax:
ax.set_xlim(xmin, 2*xmax)
ax.figure.canvas.draw()
line.set_data(xdata, ydata)
return line,
# 每隔10秒调用函数run,run的参数为函数data_gen,
# 表示图形只更新需要绘制的元素
ani = animation.FuncAnimation(fig, run, data_gen, blit=True, interval=10,
repeat=False)
plt.show()
再看下面的例子:
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
#第一个参数必须为framenum
def update_line(num, data, line):
line.set_data(data[...,:num])
return line,
fig1 = plt.figure()
data = np.random.rand(2, 15)
l, = plt.plot([], [], 'r-')
plt.xlim(0, 1)
plt.ylim(0, 1)
plt.xlabel('x')
plt.title('test')
#framenum从1增加大25后,返回再次从1增加到25,再返回...
line_ani = animation.FuncAnimation(fig1, update_line, 25,fargs=(data, l),interval=50, blit=True)
#line_ani = animation.FuncAnimation(fig1, update_line, frames=25,fargs=(data, l),
interval=50, blit=True)
#忽略frames参数,framenum会从1一直增加下去知道无穷
#由于frame达到25以后,数据不再改变,所以你会发现到达25以后图形不再变化了
#line_ani = animation.FuncAnimation(fig1, update_line, fargs=(data, l),
interval=50, blit=True)
plt.show()
希望本文所述对大家的python程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具python 画图 横坐标为时间轴时如何手动控制时间
[问题点数:40分,结帖人whw1874]
python 画图 横坐标为时间轴时如何手动控制时间
[问题点数:40分,结帖人whw1874]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年9月 其他开发语言大版内专家分月排行榜第二2013年8月 其他开发语言大版内专家分月排行榜第二2013年7月 其他开发语言大版内专家分月排行榜第二2011年4月 PHP大版内专家分月排行榜第二
2013年10月 PHP大版内专家分月排行榜第三2013年5月 PHP大版内专家分月排行榜第三2013年4月 其他开发语言大版内专家分月排行榜第三2013年4月 PHP大版内专家分月排行榜第三2013年3月 其他开发语言大版内专家分月排行榜第三2011年5月 PHP大版内专家分月排行榜第三
2014年8月 其他开发语言大版内专家分月排行榜第二2014年7月 其他开发语言大版内专家分月排行榜第二2014年5月 其他开发语言大版内专家分月排行榜第二2014年4月 其他开发语言大版内专家分月排行榜第二2014年3月 其他开发语言大版内专家分月排行榜第二2014年1月 其他开发语言大版内专家分月排行榜第二2013年12月 其他开发语言大版内专家分月排行榜第二2013年11月 其他开发语言大版内专家分月排行榜第二2013年3月 其他开发语言大版内专家分月排行榜第二2012年5月 其他开发语言大版内专家分月排行榜第二2012年4月 其他开发语言大版内专家分月排行榜第二2010年10月 其他开发语言大版内专家分月排行榜第二2010年9月 其他开发语言大版内专家分月排行榜第二
2013年9月 其他开发语言大版内专家分月排行榜第三2012年6月 其他开发语言大版内专家分月排行榜第三
2013年9月 其他开发语言大版内专家分月排行榜第二2013年8月 其他开发语言大版内专家分月排行榜第二2013年7月 其他开发语言大版内专家分月排行榜第二2011年4月 PHP大版内专家分月排行榜第二
2013年10月 PHP大版内专家分月排行榜第三2013年5月 PHP大版内专家分月排行榜第三2013年4月 其他开发语言大版内专家分月排行榜第三2013年4月 PHP大版内专家分月排行榜第三2013年3月 其他开发语言大版内专家分月排行榜第三2011年5月 PHP大版内专家分月排行榜第三
2014年8月 其他开发语言大版内专家分月排行榜第二2014年7月 其他开发语言大版内专家分月排行榜第二2014年5月 其他开发语言大版内专家分月排行榜第二2014年4月 其他开发语言大版内专家分月排行榜第二2014年3月 其他开发语言大版内专家分月排行榜第二2014年1月 其他开发语言大版内专家分月排行榜第二2013年12月 其他开发语言大版内专家分月排行榜第二2013年11月 其他开发语言大版内专家分月排行榜第二2013年3月 其他开发语言大版内专家分月排行榜第二2012年5月 其他开发语言大版内专家分月排行榜第二2012年4月 其他开发语言大版内专家分月排行榜第二2010年10月 其他开发语言大版内专家分月排行榜第二2010年9月 其他开发语言大版内专家分月排行榜第二
2013年9月 其他开发语言大版内专家分月排行榜第三2012年6月 其他开发语言大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。最近要花一些图,本来是打算用matlab的,但是matlab有时候莫名其妙的挂掉,忍受不了,便找到了matplotlib。我熟悉并且喜欢Python,所以matplotlib替代了matlab。
使用了几天,感觉还好,不过觉得文档不够全,网页版的有些链接打不开,pdf版本内容也就那么多,很多想找的内容都找不到,于是去看源码。下面整理一些使用心得。主要是用到matplotlib里面的pyplot和与其相关的。先看简单的,画一张简单的函数曲线图,
#导入pyplot,文档里面的例子通常将其别名为plt
import matplotlib.pyplot as plt
#创建一幅图
plt.figure()
plt.plot(x,y)
plt.show()
通常,除了要把曲线显示出来,还会有其他的要求,比如坐标轴的标注,图的大小,标题,图例,画多条曲线在一张图里,画多张子图在一张图里,类似与matlab里面的subplot,等。下面一点一点的介绍。
首先看plt.figure(),这个是创建一幅图,可以没有参数,但是,也可以有参数,可以直接看源码的参数说明,figsize=(width,height) #这个指定图的大小,单位好像是inch,dpi # dot per inch,像素密度,是不是就是类似于iphone显示屏的ppi,视网膜屏的ppi要求在,326ppi,在960x640的3.5寸屏上。还有其他参数。
这里是用plt调用figure(),没有保存其返回值,这个函数是有返回值的,返回一个什么什么Figure对象,
再看plt.plot(x,y),这个将数据画成曲线,显示,x就对应横坐标,y对应纵坐标,x,y都是一个一维的list,这个是很好理解的。plot除了需要x,y这两个参数,还可以有其他参数,比如,指定线的样式,可以是虚线,点线,还有颜色,线的宽度,这些可以使用关键字参数指定。还有一个,这里可以指定label,这个label可以用来作图例的文字。
最后是plt.show(),这个就是把图像显示出来,好像没什么好说的。
关于标注和标题由于只是一幅图,比较好指定,plt.xlabel(text),plt.ylabel(text),plt.title(text),还可以制定字体大小,使用关键字参数fontsize=16,补充一点就是公式的输入,它支持latex格式的公式输入,就是两个$中间写latex的公式,保证字符串是raw格式,这个还是很好用的。有一个在线的latex公式编辑测试,很好用的,给出链接,
关于坐标轴范围,通过plt.axis([xmin xmax ymin ymax]指定,
关于网格,plt.grid(True),就可以显示网格。
关于图例,如果在画曲线的时候制定了label,那么图例也是很简单的,plt.legend()就可以了。在matplotlib里面。有专门的一个legend的类,还很复杂的,暂时不深究了。
关于画多条曲线,在matlab里面要使用hold on,这个好像不需要,直接继续plt.plot(x,y)就可以了。下面看个完整的例子。
import numpy as np
import matplotlib.pyplot as plt
def f1(t):
return np.exp(-t)*np.cos(2*np.pi*t)
def f2(t):
return np.sin(2*np.pi*t)*np.cos(3*np.pi*t)
t = np.arange(0.0,5.0,0.02)
plt.figure()
plt.plot(t,f1(t),"g-",label="$f(t)=e^{-t} \cdot \cos (2 \pi t)$")
plt.plot(t,f2(t),"r-.",label="$g(t)=\sin (2 \pi t) \cos (3 \pi t)$",linewidth=2)
plt.axis([0.0,5.01,-1.0,1.5])
plt.xlabel("t")
plt.ylabel("v")
plt.title("a simple example")
plt.grid(True)
plt.legend()
plt.show()
画图结果如下,
这只是很简单的一种情况,其他的情况,比如两个y轴,多个子图,子图的标题,不标准的子图布局,等,见后面的更新。
阅读(...) 评论()转用Matplotlib绘制 折线图 散点图 柱状图 圆饼图
Matplotlib是一个Python工具箱,用于科学计算的数据可视化。借助它,Python可以绘制如Matlab和Octave多种多样的数据图形。
Matplotlib并不是Python的默认组件,需要额外安装。
官方下载地址&
必须下载与自己的Python版本,操作系统类型对应的安装包。如Windows 64位+Python3.3,应该下载matplotlib-1.3.1.win-amd64-py3.3.exe
让我们运行第一个Matplotlib程序:
import matplotlib.pyplot as plt
plt.plot([1, 2, 3])
plt.ylabel('some numbers')
plt.show()
如果Matplotlib已经正确安装,您将会看到如下结果:
这个弹出窗口就是Matplotlib的绘图输出窗口,底部从左到右有七个按钮:
重置视图,显示最初的视图
上一个视图
下一个视图
移动工具,用于拖动绘图的显示区域
缩放工具,可以拖拽一个矩形缩放到窗口大小
配置工具,调整绘图选项
接下来我们一起分析这个短小的程序代码。
import matplotlib.pyplot as plt
调用matplotlib的pyplot绘图工具,之后我们就可以使用plt代替matplotlib.pyplot使用了。
plt.plot([1, 2, 3])
绘制一个折线图。plot()方法用于绘制折线图,pyplot还有绘制柱状图、饼图的方法。[1,2,3]是Y坐标,而缺省的X坐标为[0,1,2]。两个一维数组X和Y构成了折线关键点的坐标(0,1),(1,2),(2,3)。您可以尝试修改参数如:
plt.plot([0, 1, 2, 3], [0.1, 0.2, 0.15, 0.3]) # 第一个数组是X坐标,第二个数组是Y坐标
plt.ylabel('some numbers')
为Y坐标轴添加标签,通常用以标注此变量的名称和单位。当然X轴也是可以添加标签的:
plt.xlabel('Time (s)')
plt.ylabel('Speed (m/s)')
plt.show()
显示绘图窗口。在绘图完成之后,我们要调用这个方法才能打开绘图输出窗口。
另一种图形输出方式是保存图片,缺点是不能使用缩放、移动等交互浏览功能:
plt.save('output.png')
plot()函数可以绘制折线图和折线图,取决于您使用的参数。
一个最简单的例子:
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y = [0.1, 0.2, 0.2, 0.3, 0.2, 0.1]
plt.plot(x, y)
plt.show()
绘制折线图/散点图需要一系列关键点。x是关键点的x轴坐标,y是关键点的y轴坐标。
未附加额外参数时,将绘制最基本的折线图:
x轴坐标是可以缺省的:
y是一个一维数组,是折线图关键点的y轴坐标。而x轴坐标没有给出,会默认以[0,1,2,...]的常数列作为x轴坐标。
散点图和折线图只是线条样式的差异,我们可以通过简单的参数设置线条的样式和颜色。样式和颜色参数都是一个或多个字符构成的字符串。
既可以单独设定颜色或样式,如'g'代表绿色,'-'代表实线
也可以同时设定样式和颜色,比如'--g'代表绿色虚线,其中'--'代表虚线,'g'代表绿色
样式字符串中的参数字符是无顺序的,'g--'和'--g'的意义是相同的
也可以同时设定折线和散点,如'-or'代表红色实线+圆圈
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y = [0.1, 0.2, 0.2, 0.3, 0.2, 0.1]
plt.plot(x, y, '-or')
plt.show()
折线样式:
散点样式:
一个像素点
'^' 'v' '&' '&'
三角形(上下左右)
'1' '2' '3' '4'
三叉号(上下左右)
更多样式参见&
您也可以不必使用样式字符串,而直接使用参数名,这种方式更加灵活:
plot(x, y, color='green', linestyle='dashed', marker='o', markerfacecolor='blue', markersize=12)
我们可以在一个坐标中绘制多条折线或散点,plot(第一条线的参数,第二条线的参数...):
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y = [0.1, 0.2, 0.2, 0.3, 0.2, 0.1]
y2 = [0.2, 0.2, 0.3, 0.2, 0.3, 0]
plt.plot(x, y, 'b', x, y2, 'g')
plt.show()
bar()函数可以绘制各种样式的柱状图,barh()则可绘制水平方向的柱状图。两个方法除了绘图方向外,其他属性和用法的是相同的。
bar()至少需要两个数组left和height:left是每个柱向左到坐标原点的距离;height是每个柱的高度。
import matplotlib.pyplot as plt
left = [0, 1, 2, 3, 4, 5]
height = [0.1, 0.2, 0.2, 0.3, 0.2, 0.1]
plt.bar(left, height)
plt.show()
bar()函数的参数可以控制柱状图的多种样式,最常用的有:
width,第3个参数,柱的宽度。可以是一个常数或数组。数组将对每条柱设定不同的值。
bottom,第4个参数,柱底部的y轴坐标。可以是一个常数或数组。数组将对每条柱设定不同的值。
color,关键字参数,柱的填充颜色。可以是一个常数或数组。数组将对每条柱设定不同的值。
edgecolor,关键字参数,柱的边框颜色。
linewidth,关键字参数,边框宽度。
xerr,yerr,关键字参数,x和y轴误差线。
ecolor,关键字参数,误差线颜色。
以上参数都可以是一个常数或数组。常数为所有柱设定相同的值,数组将对每条柱设定不同的值。
align,关键字参数,设定柱的对齐方式。'edge'将x坐标设为左边界,'center'将x坐标设为中轴线。
下面的柱状图要表达一件商品12个月的销量:
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
sales = [112, 105, , 109, 103, 110, 113, 112, 108, 106, , 114]
plt.bar(month, sales, 0.5, color='y', edgecolor='g', linewidth=3, align='center')
plt.show()
我们设置柱宽度0.5,填充颜色'y'(黄色),边框颜色'g'(绿色),线框宽度3,对齐方式为'center'
为了让销量变化看起来更明显,我们现在只绘出100以上的部分:
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
sales = [12, 5, 11, 9, 3, 10, 13, 12, 8, 6, 11, 14]
plt.bar(month, sales, 0.5, 100, color='y', edgecolor='g', linewidth=3, align='center')
plt.show()
我们添加了新的参数,设置柱状图的底部为100,而sales数据则减去100。
现在我们想将四个季度用颜色区分出来:
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
sales = [12, 5, 11, 9, 3, 10, 13, 12, 8, 6, 11, 14]
colors = ['g', 'g', 'g', 'm', 'm', 'm', 'y', 'y', 'y', 'c', 'c', 'c']
plt.bar(month, sales, 0.5, 100, color=colors, linewidth=0, align='center')
plt.show()
我们用一个数组来存储每个柱的颜色,其长度必须与month和sales相同。
绘制多段柱图的原理是:先后绘制多张柱图,依次重叠在上方,如果后面绘制的柱图比前者的柱图短,就可以显示出前者长出的部分。
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
cost = [8, 7, 9, 9, 3, 10, 10, 12, 8, 6, 11, 10]
profit = [12, 11, 11, 13, 5, 11, 13, 15, 10, 9, 12, 13]
bar1 = plt.bar(month, profit, 0.5, color='y', linewidth=0, align='center')
bar2 = plt.bar(month, cost, 0.5, color='g', linewidth=0, align='center')
plt.legend( (bar1[0], bar2[0]), ('Profits', 'Costs') )
plt.show()
我们还是用了legend()方法标识两段柱图的图例。legend()的更多用法见一节。
最后,让我们来绘制一个水平柱图,只需将bar()替换成barh():
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
cost = [8, 7, 9, 9, 3, 10, 10, 12, 8, 6, 11, 10]
profit = [12, 11, 11, 13, 5, 11, 13, 15, 10, 9, 12, 13]
bar1 = plt.barh(month, profit, 0.5, color='y', linewidth=0, align='center')
bar2 = plt.barh(month, cost, 0.5, color='g', linewidth=0, align='center')
plt.legend( (bar1[0], bar2[0]), ('Profits', 'Costs') )
plt.show()
pie()是绘制饼图的函数。
pie()最基本的输入数据是一个数组。它可以根据数组元素的比例绘制扇形,因此不必要事先计算好百分比。
import matplotlib.pyplot as plt
rate = [1, 7, 3, 9]
plt.pie(rate)
plt.show()
有几个最常用的参数可以控制绘图样式:
colors - 数组,扇形颜色
explode - 数组,扇形偏离圆心的距离
labels - 数组,扇形的标签
首先,让我们为饼图设定颜色,并让第三个扇形抽离出来:
import matplotlib.pyplot as plt
rate = [1, 7, 3, 9]
explode = [0, 0, 0.1, 0]
colors = ['c', 'm', 'y', 'g']
plt.pie(rate, explode=explode, colors=colors)
plt.show()
然后,要为每个扇形添加标签:
import matplotlib.pyplot as plt
rate = [1, 7, 3, 9]
explode = [0, 0, 0.1, 0]
colors = ['c', 'm', 'y', 'g']
labels = ['Apple', 'Pear', 'Peach', 'Orange']
plt.pie(rate, explode=explode, colors=colors, labels=labels)
plt.show()
如何显示百分比数值呢?我们需要使用autopct参数:
None,不显示百分比
格式字符串,如'%d percent',显示&40 percent&形式的百分比
方法,调用方法输出百分比
import matplotlib.pyplot as plt
rate = [1, 7, 3, 9]
explode = [0, 0, 0.1, 0]
colors = ['c', 'm', 'y', 'g']
labels = ['Apple', 'Pear', 'Peach', 'Orange']
plt.pie(rate, explode=explode, colors=colors, labels=labels, autopct='%d%%')
plt.show()
autopct='%d%%'表示我们将百分比以整数(%d)形式输出,后缀是百分号'%'。在格式化字符串中,百分号要用'%%'转义字符表示。
这一节介绍如何为图表添加标题,刻度,标签,图例,注释等元素,让图表更加清晰易懂。
title()方法用于绘制图表标题,一般位于顶部。最简单的方法是使用title('title'),绘制默认格式的标题文本。
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
cost = [8, 7, 9, 9, 3, 10, 10, 12, 8, 6, 11, 10]
profit = [12, 11, 11, 13, 5, 11, 13, 15, 10, 9, 12, 13]
plt.barh(month, profit, 0.5, color='y', linewidth=0, align='center')
plt.barh(month, cost, 0.5, color='g', linewidth=0, align='center')
plt.title('Sales Statistics')
plt.show()
若只想设置水平对齐,可以直接使用loc参数:
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
cost = [8, 7, 9, 9, 3, 10, 10, 12, 8, 6, 11, 10]
profit = [12, 11, 11, 13, 5, 11, 13, 15, 10, 9, 12, 13]
plt.barh(month, profit, 0.5, color='y', linewidth=0, align='center')
plt.barh(month, cost, 0.5, color='g', linewidth=0, align='center')
plt.title('Sales Statistics', loc='right')
plt.show()
您也可以额外使用fontdict参数定义格式,fontdict是一个字典数据(dict),有以下字段
'fontsize': 字体大小
'verticalalignment': 垂直对齐
'horizontalalignment': 水平对齐
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
cost = [8, 7, 9, 9, 3, 10, 10, 12, 8, 6, 11, 10]
profit = [12, 11, 11, 13, 5, 11, 13, 15, 10, 9, 12, 13]
plt.barh(month, profit, 0.5, color='y', linewidth=0, align='center')
plt.barh(month, cost, 0.5, color='g', linewidth=0, align='center')
font = {'fontsize': 22, 'verticalalignment': 'bottom', 'horizontalalignment': 'center'}
plt.title('Sales Statistics', fontdict=font)
plt.show()
xticks()和yticks()会修改默认的x轴y轴刻度。
继续上一个例子,现在我们将要把y轴的刻度从1,2,3...换成月份Jan,Feb,Mar...
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
cost = [8, 7, 9, 9, 3, 10, 10, 12, 8, 6, 11, 10]
profit = [12, 11, 11, 13, 5, 11, 13, 15, 10, 9, 12, 13]
plt.barh(month, profit, 0.5, color='y', linewidth=0, align='center')
plt.barh(month, cost, 0.5, color='g', linewidth=0, align='center')
plt.title('Sales Statistics')
ticks = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
plt.yticks(month, ticks)
plt.show()
yticks()有两个参数,第一个数组是每个刻度的位置,第二个数组是各个刻度。两个数组等长,设定某刻度的值应该定位于何处。
接下来,添加x轴和y轴的标签:
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
cost = [8, 7, 9, 9, 3, 10, 10, 12, 8, 6, 11, 10]
profit = [12, 11, 11, 13, 5, 11, 13, 15, 10, 9, 12, 13]
plt.barh(month, profit, 0.5, color='y', linewidth=0, align='center')
plt.barh(month, cost, 0.5, color='g', linewidth=0, align='center')
plt.title('Sales Statistics')
ticks = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
plt.yticks(month, ticks)
plt.xlabel('Money (10RMB)')
plt.ylabel('Month')
plt.show()
因为有多段柱图,黄色和绿色,我们需要图例区分它们的含义:
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
cost = [8, 7, 9, 9, 3, 10, 10, 12, 8, 6, 11, 10]
profit = [12, 11, 11, 13, 5, 11, 13, 15, 10, 9, 12, 13]
bar1 = plt.barh(month, profit, 0.5, color='y', linewidth=0, align='center')
bar2 = plt.barh(month, cost, 0.5, color='g', linewidth=0, align='center')
plt.title('Sales Statistics')
ticks = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
plt.yticks(month, ticks)
plt.xlabel('Money (10RMB)')
plt.ylabel('Month')
plt.legend( (bar1[0], bar2[0]), ('Profits', 'Costs') )
plt.show()
legend()有两个数组参数:第一个是样式对象,比如这里选了bar1的第1个柱,bar2的第1个柱(如果是折线图则是某一点的样式);第二个是描述字符,对应描述每一个样式。
使用subplot()替代plot,可以在同一画布里绘制多个图表,它们的数量,大小都是可调的。
Python图表绘制:matplotlib绘图库入门&博客
源文:http://xuexiii.org/index.php/Matplotlib
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
layout/main.xml&?xml version=&1.0& encoding=&utf-8&?& &LinearLayout xmlns:android=&/apk/res/android& android:orient ...
在上一篇文章中,介绍了如何使用Silverlight Toolkit提供的Chart控件绘制柱状图(Column,Bar),今天会继续使用上文中所创建的代码,我们只要做很少的修改就可以让柱状图显示变成饼图,折线图或散点图. 好了,开始今天的正文. 首先,我们要新创建一个饼图的&Silverlight 控件&,并将其命名为:PieSampl ...
Android中利用View进行绘制折线图,饼状图,柱状图: 绘制这些图形时,主要用到的知识点为: 1.画笔的设置 2.画布的设置 3.让该类继承View,并复写onDraw方法即可
由于源码 较多,不进行代码粘贴了 下面进行截图看看: 1.折线图:
下面介绍几个方法关于绘制图形的: 可以参考这个api http: ...
C++ GUI 绘图控件目录 MFC VS2010 使用TeeChart绘图控件 - 之一 - 控件和类的导入VS2010 使用TeeChart绘图控件 - 之二 - 绘制图形(折线图,柱状图)TeeChart绘图控件 - 之三 - 提高绘图的效率MFC下好用的高速绘图控件-(Hight-Speed Charting)绘制动态曲线 Qt qt超强精美绘图控件 ...
http://www./lib/view/open3.html achartengine地址:/p/achartengine//achartengine 数据模型: XYSeries: 最常用的数据结构,主要包括一系列的double型(x, ...
最近参加了东三省的数模竞赛,怎么说呢==怎一个坑爹了得.不过最后还是挣扎的把论文交上去了.因为我在数模中主要负责写代码的部分,正赶上最近有点时间,所以整理一下数模中学到的东西,也算对自己知识的一个梳理.PS:只是一些基本的知识和一些以前大家就碰到过的问题,希望大家不要吐槽. 首先是背景: 比赛:2013年东三省数模 所选题:A题(http://www.mad ...
本代码是一年前公司项目需要自己所写,当时做android项目需要统计的功能,统计的图表包括饼图.柱状图.折线图,代码写的有些笨拙!希望大家能够看懂!其代码做抛砖引玉,希望大家能够再改写下!可以用多线程做出动画,是不是更好呢?这些后期我也没有整理过,所以谁能再整理下!此含有柱状图和折线图的组合,有兴趣的可以拆分成单个的折线图和柱状图.LineHistogram ...
这篇文章主要介绍了在Linux下使用Python的matplotlib绘制数据图的教程,matplotlib基于Numpy进行科学计算上的延伸,需要的朋友可以参考下如果你想要在Linxu中获得一个高效.自动化.高质量的科学画图的解决方案,应该考虑尝试下matplotlib库.Matplotlib是基于python的开源科学测绘包,基于python软件基金会许 ...

我要回帖

更多关于 matplotlib 的文章

 

随机推荐