第 15 章 生成数据

安装 Matplotlib    

pip install matplotlib


15.1 绘制简单的折线图

import matplotlib.pyplotas plt

#绘制折线图的数据

squares = [1,4,19,26,35]

fig,ax = plt.subplots()

ax.plot(squares)

plt.show()


15.1.1 修改标签文字和线条粗细

import matplotlib.pyplotas plt

#绘制折线图的数据

squares = [1,4,9,16,25]

fig,ax = plt.subplots()

ax.plot(squares, linewidth=3)

#设置图表标题并给坐标轴加上标签

ax.set_title("平方数",fontsize=24)

ax.set_xlabel("值",fontsize=14)

ax.set_ylabel("值的平方",fontsize=14)

#设置字体

plt.rcParams['font.sans-serif']=['SimHei']#显示中文标签

plt.rcParams['axes.unicode_minus']=False

ax.tick_params(axis='both',labelsize=14)

plt.show()


15.1.2 查看 matplotlib 内置样式

>>> import matplotlib.pyplot as plt

>>> plt.style.available

样式使用:plt.style.use ('seaborn')

15.1.3 使用scatter()绘制散点图并设置样式

import matplotlib.pyplotas plt

plt.style.use('seaborn')

fig,ax = plt.subplots()

ax.scatter(2,4)

plt.show()


15.1.4 绘制 1000个点

#使用 scatter() 绘制散点图并设置样式

import matplotlib.pyplotas plt

x_values =range(1,1001)

y_values = [x**2 for xin x_values]

plt.style.use('seaborn')

fig,ax = plt.subplots()

ax.scatter(x_values,y_values,s=10)

#设置图表标题并给坐标轴加上标签

ax.set_title("平方数",fontsize =24)

ax.set_xlabel("值",fontsize =14)

ax.set_ylabel("值的平方",fontsize =14)

#设置字体

plt.rcParams['font.sans-serif']=['SimHei']#显示中文标签

plt.rcParams['axes.unicode_minus']=False

#设置刻度标记的大小

ax.tick_params(axis='both',which='major',labelsize =14)

ax.axis([0,1100,0,1100000])

plt.show()


15.1.5 设置颜色

ax.scatter(x_values,y_values,c='red',s=10)

ax.scatter(x_values,y_values,c=(0,0.8,0),s=10)

15.1.6 使用颜色映射

ax.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,s=10)

15.1.7 自动保存图表

plt.savefig('squares_plot.png',bbox_inches ='tight')

15.2 绘制随机漫步图

import matplotlib.pyplotas plt

from RandomWalk import RandomWalk

#创建一个RandomWalk 实例

rw = RandomWalk()

rw.fill_walk()

#将所有的点都绘制出来

plt.style.use('classic')

fig,ax = plt.subplots()

ax.scatter(rw.x_values,rw.y_values,s=15)

plt.show()


15.3 将所有的点都绘制出来

import matplotlib.pyplotas plt

from RandomWalkimport RandomWalk

while True:

        rw = RandomWalk()

        rw.fill_walk()

        #将所有的点都绘制出来

         plt.style.use('classic')

         fig,ax = plt.subplots(figsize=(15,9))

         ax.scatter(rw.x_values,rw.y_values)

         plt.show()

         keep_running =input("Make another walk?(y/n)")

         if keep_running =='n':

                     break


15.4 使用Plotly模拟掷骰子

安装plotly

pip install plotly

15.5 掷骰子

创建 Die类

from randomimport randint

class Die:

def __init__(self,num_sides=6):

#骰子默认为6面

        self.num_sides = num_sides

def roll(self):

#返回一个位于1和骰子面数之间的随机值

        return randint(1,self.num_sides)

分析结果并绘制直方图

from Dieimport Die

from plotlyimport offline

from plotly.graph_objsimport Bar,Layout

#创建一个D6

die = Die()

print(die.num_sides)

#掷几次骰子并将结果存储在一个列表中

results = []

for roll_numin range(100):

          result = die.roll()

          results.append(result)

#分析结果

frequencies = []

for valuein range(1,die.num_sides+1):

          frequency = results.count(value)

          frequencies.append(frequency)

x_values =list(range(1,die.num_sides +1))

data = [Bar(x=x_values,y=frequencies)]

x_axis_config = {'title':'结果'}

y_axis_config = {'title':'结果的频率'}

my_layout = Layout(title='掷一个D6 1000次的结果',xaxis=x_axis_config,yaxis=y_axis_config)

offline.plot({'data':data,'layout':my_layout},filename='d6.html')


15.6 同时掷两个骰子

from Dieimport Die

from plotlyimport offline

from plotly.graph_objsimport Bar,Layout

'''

同时掷两个骰子

'''

#创建一个D6

die = Die()

die1 = Die()

#掷几次骰子并将结果存储在一个列表中

results = []

for roll_numin range(100):

      result = die.roll()+die1.roll()

     results.append(result)

#分析结果

frequencies = []

max_result = die.num_sides + die1.num_sides

for valuein range(1,die.num_sides+1):

      frequency = results.count(value)

      frequencies.append(frequency)

x_values =list(range(2,max_result +1))

data = [Bar(x=x_values,y=frequencies)]

x_axis_config = {'title':'结果','dtick':1}

y_axis_config = {'title':'结果的频率'}

my_layout = Layout(title='掷两个D6 1000次的结果',xaxis=x_axis_config,yaxis=y_axis_config)

offline.plot({'data':data,'layout':my_layout},filename='d6.html')


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容