matplotlib模块的使用

>>> import matplotlib.pyplot as mb
>>> s=[1,4,9,16,25,36]
>>> mb.plot(s)
[<matplotlib.lines.Line2D object at 0x040DACF0>]
>>> mb.show()

以上代码会绘制出一个图表,单击磁盘图标可将图形保存起来。

接下来的代码是对上面代码的改进

>>> import matplotlib.pyplot as plt
>>> s=[1,4,9,16,25,36]
>>> plt.plot(s,linewidth=5)
[<matplotlib.lines.Line2D object at 0x03FED690>]
>>> plt.title("pingfangshu",fontsize=24)
<matplotlib.text.Text object at 0x03FD5930>
>>> plt.xlabel("zhi",fontsize=24)
<matplotlib.text.Text object at 0x03FB8710>
>>> plt.ylabel("pingfangzhi",fontsize=24)
<matplotlib.text.Text object at 0x03FC26F0>
>>> plt.tick_params(axis="both",labelsize=14)
>>> plt.show()

以上代码做出来的图表更加清晰,linewidth决定了plot()绘制的线条的粗细,title()给图表指定标题,参数fontsize指定了图表中文字的大小,函数xlabel()和ylabel()让你能够为每条轴设置标题,函数tick_params()设置刻度的样式,其中指定的实参(axis="both")将影响x轴和y轴的刻度,并将刻度标记的字号设置为14(labelsize=14)

当我们向plot()提供一系列数字时,它假设第一个数据点对应的x坐标值为0,但我们的第一个点对应的x的值为1,为了改变这种默认行为,我们可以给plot()同时提供输入值和输出值,代码如下

>>> import matplotlib.pyplot as plt
>>> s=[1,4,9,16,25,36]
>>> input=[1,2,3,4,5,6]
>>> plt.plot(input,s,linewidth=5)
[<matplotlib.lines.Line2D object at 0x04325730>]
>>> plt.title("pingfangshu",fontsize=24)
<matplotlib.text.Text object at 0x0430E750>
>>> plt.xlabel("zhi",fontsize=24)
<matplotlib.text.Text object at 0x04141330>
>>> plt.ylabel("pingfangzhi",fontsize=24)
<matplotlib.text.Text object at 0x04167590>
>>> plt.tick_params(axis="both",labelsize=14)
>>> plt.show()

以下代码可以绘制出一个点

>>> import matplotlib.pyplot as plt
>>> plt.scatter(2,4)
<matplotlib.collections.PathCollection object at 0x04507590>
>>> plt.show()

以下代码是对上面代码的改进

>>> import matplotlib.pyplot as plt
>>> plt.scatter(2,4,s=200)
<matplotlib.collections.PathCollection object at 0x046E5C50>
>>> plt.title("pingfangshu",fontsize=24)
<matplotlib.text.Text object at 0x04542B50>
>>> plt.xlabel("zhi",fontsize=14)
<matplotlib.text.Text object at 0x043D4BB0>
>>> plt.ylabel("pingfangzhi",fontsize=14)
<matplotlib.text.Text object at 0x043CB730>
>>> plt.tick_params(axis="both",which="major",labelsize=14)
>>> plt.show()

以下代码是绘制多个点

>>> import matplotlib.pyplot as plt
>>> x_values=[1,2,3,4,5]
>>> y_values=[1,4,9,16,25]
>>> plt.scatter(x_values,y_values,s=100)
<matplotlib.collections.PathCollection object at 0x047614F0>
>>> plt.title("pingfangshu",fontsize=24)
<matplotlib.text.Text object at 0x0474A390>
>>> plt.xlabel("zhi",fontsize=14)
<matplotlib.text.Text object at 0x04704AF0>
>>> plt.ylabel("pingfangzhi",fontsize=14)
<matplotlib.text.Text object at 0x0452CF50>
>>> plt.tick_params(axis="both",which="major",labelsize=14)
>>> plt.show()

接下来的代码是自动绘制数据,不用手动输入数据,其中的函数axis()是用来指定每个坐标轴的取值范围的,函数axis()要求提供四个值;x和y坐标轴的最小值和最大值,在这里,我们将x坐标轴的取值范围设置为0--1100,y坐标轴的取值范围设置为0--1100000,代码如下所示

>>> import matplotlib.pyplot as plt
>>> x_values=list(range(1,1001))
>>> y_values=[x**2 for x in x_values]
>>> plt.scatter(x_values,y_values,s=40)
<matplotlib.collections.PathCollection object at 0x06F6EBD0>
>>> plt.title("pingfangzhi",fontsize=24)
<matplotlib.text.Text object at 0x06F58B50>
>>> plt.xlabel("zhi",fontsize=14)
<matplotlib.text.Text object at 0x046F0D90>
>>> plt.ylabel("pingfangzhi",fontsize=14)
<matplotlib.text.Text object at 0x06F42230>
>>> plt.tick_params(axis="both",which="major",labelsize=14)
>>> plt.axis([0,1100,0,1100000])
[0, 1100, 0, 1100000]
>>> plt.show()

接下来的代码,我们将回到pycharm中,这样容易修改,对上面代码改进了一行代码
在diyige.py文件中

#coding=utf-8
import matplotlib.pyplot as plt
x_values=list(range(1,1001))
y_values=[x**2 for x in x_values]
plt.scatter(x_values,y_values,edgecolors="none",s=40)#就修改了一下这句代码,删除数据点的轮廓,看起来效果更好
plt.title("pingfangzhi",fontsize=24)
plt.xlabel("zhi",fontsize=14)
plt.ylabel("pingfangzhi",fontsize=14)
plt.tick_params(axis="both",which="major",labelsize=14)
plt.axis([0,1100,0,1100000])
[0, 1100, 0, 1100000]
plt.show()

自定义点的颜色,代码如下所示
在diyige.py文件中

#coding=utf-8
import matplotlib.pyplot as plt
x_values=list(range(1,1001))
y_values=[x**2 for x in x_values]
plt.scatter(x_values,y_values,c="red",edgecolors="none",s=40)#就修改了一下这句代码,修改点的颜色,还可以设置参数c为元组,比如c=(0,0,0.8)
plt.title("pingfangzhi",fontsize=24)
plt.xlabel("zhi",fontsize=14)
plt.ylabel("pingfangzhi",fontsize=14)
plt.tick_params(axis="both",which="major",labelsize=14)
plt.axis([0,1100,0,1100000])
[0, 1100, 0, 1100000]
plt.show()

以下代码将点的颜色设置成了渐变色

#coding=utf-8
import matplotlib.pyplot as plt
x_values=list(range(1,1001))
y_values=[x**2 for x in x_values]
plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,edgecolors="none",s=40)#就修改了一下这句代码,将点的颜色设置为渐变色
plt.xlabel("zhi",fontsize=14)
plt.ylabel("pingfangzhi",fontsize=14)
plt.tick_params(axis="both",which="major",labelsize=14)
plt.axis([0,1100,0,1100000])
[0, 1100, 0, 1100000]
plt.show()

以下代码将图表保存为png格式的图片

#coding=utf-8
import matplotlib.pyplot as plt
x_values=list(range(1,1001))
y_values=[x**2 for x in x_values]
plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,edgecolors="none",s=40)
plt.xlabel("zhi",fontsize=14)
plt.ylabel("pingfangzhi",fontsize=14)
plt.tick_params(axis="both",which="major",labelsize=14)
plt.axis([0,1100,0,1100000])
[0, 1100, 0, 1100000]
plt.savefig("shuju.png",bbox_inches="tight")#第二个实参指定将图表多余的空白区域裁剪掉,如果要保留图表周围多余的空白区域,可忽略这个实参

以下代码将数据绘制为条形图,摇一个骰子的例子

#coding=utf-8
from random import randint
import pygal
class shaizi():
    def __init__(self,sides=6):
        self.sides=sides
    def yao(self):
        return randint(1,self.sides)
a=shaizi()
results=[]
tongji=[]
for i in range(1000):
    result=a.yao()
    results.append(result)
for i in range(1,a.sides+1):
    ii=results.count(i)
    tongji.append(ii)
print (results)
print (tongji)输出结果为[160, 187, 169, 176, 148, 160]
h=pygal.Bar()
h.title="1000 times results"
h.x_labels=["1","2","3","4","5","6"]
h.x_title="result"
h.y_title="tongji de result"
h.add('D6',tongji)
h.render_to_file("ton.svg")

以下代码将数据绘制为条形图,摇两个骰子的例子

#coding=utf-8
from random import randint
import pygal
class shaizi():
    def __init__(self,sides=6):
        self.sides=sides
    def yao(self):
        return randint(1,self.sides)
a=shaizi()
b=shaizi()
results=[]
tongji=[]
for i in range(1000):
    result=a.yao()+b.yao()
    results.append(result)
for i in range(2,a.sides+b.sides+1):
    ii=results.count(i)
    tongji.append(ii)
print (results)
print (tongji)
h=pygal.Bar()
h.title="1000 times results"
h.x_labels=["2","3","4","5","6","7","8","9","10","11","12"]
h.x_title="result"
h.y_title="tongji de result"
h.add('D12',tongji)
h.render_to_file("tq.svg")

以下代码将数据绘制为条形图,摇两个面数不同的骰子的例子,一个6面,一个10面

#coding=utf-8
from random import randint
import pygal
class shaizi():
    def __init__(self,sides=6):
        self.sides=sides
    def yao(self):
        return randint(1,self.sides)
a=shaizi()
b=shaizi(10)
results=[]
tongji=[]
for i in range(5000):
    result=a.yao()+b.yao()
    results.append(result)
for i in range(2,a.sides+b.sides+1):
    ii=results.count(i)
    tongji.append(ii)
print (results)
print (tongji)
h=pygal.Bar()
h.title="5000 times results"
h.x_labels=["2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"]
h.x_title="result"
h.y_title="tongji de result"
h.add('D16',tongji)
h.render_to_file("tq.svg")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • Matplotlib 入门教程 来源:Introduction to Matplotlib and basic l...
    布客飞龙阅读 31,794评论 5 162
  • 特大声明:本文复制于实验楼网站 Matplotlib 是一个优秀的 2D&3D 图形库, 主要功能是生成科学用图,...
    狼牙战士阅读 2,826评论 0 7
  • 简介 文章较长,点击直达我的博客,浏览效果更好。本文内容基本是来源于STHDA,这是一份十分详细的ggplot2使...
    taoyan阅读 51,096评论 7 159
  • 我看到过一段令人深思的话:美国人用一百块钱买保健品,十块钱看病,一块钱抢救;中国人用一块钱买保健品,十块钱买...
    曹可可阅读 887评论 4 14
  • 这是杀手第一次执行任务,当他踏出鬼门的那一刻,命运的时钟便已开启,时间在一分一秒的流逝。 按照出门前死...
    陆盼盼阅读 374评论 5 6