使用Python可视化Pygal包来生成可缩放的矢量图形文件!
对于在尺寸不同的屏幕上显示图标,它们将自动缩放以适合观看者的屏幕,如果以在线的方式使用图标,建议使用Pygal来生成,这样在任何设备上显示都会很美观!!!
1、安装Pygal
安装Pygal有好几种办法这边简略带过!!!
介绍一种在pycharm中直接安装的方法!
1、在File文件中打开Settings
2、找到Project:untitled打开Projiect lnterpreter右上方的+号
3、输入我们要安装的Pygal包,选中Specify version,点击左下方Install Package,出现绿色显示安装完成
4、查询下是否安装完成,在pycharm下方找到Terminal,并输入pip list,这时候我们查看到Pygal安装完成2.4.0版本。
2、Pypal画廊
了解使用Pygal可创建什么样的图标,可访问官网http://www.pygal.org/单击Documentation,再单击Chart types
3、创建Die类
下面的类模拟掷一个骰子:
创建die.py文件
from random import randint class Die(): """表示一个骰子的类""" def __init__(self, num_sides=6): #_init_()接受一个可选参数,如果没有指定任何实参,面数默认为6 """骰子默认为六面""" self.num_sides = num_sides def roll(self): #方法roll()使用randint()来返回 """返回一个位于1和骰子面熟之间的随机值""" return randint(1,self.num_sides)
4、掷骰子
使用Die类来掷骰子,将结果打印
新建一个die_visual.py文件
from matp.touzi.die import Die #创建一个Die实例 die=Die() #掷几次骰子,并将结果存储在一个列表中 results=[] for roll_num in range(100): result=die.roll() results.append(result) print(results)
通过对列表的打印,我们可以的下列结果集:
在效果图中我们可以看出,并未出现0和7的值所有结果有效
5、分析结果
在上述代码中,我们得到了骰子所有可能的列表,现在我们需要分析每个点出现的次数:
在die_visual.py文件添加修改:
from matp.touzi.die import Die #创建一个Die实例 die=Die() #掷几次骰子,并将结果存储在一个列表中 results=[] for roll_num in range(1000): result=die.roll() results.append(result) #分析结果 frequencies=[] for value in range(1,die.num_sides+1): frequency=results.count(value) frequencies.append(frequency) print(frequencies) #print(results)
这边我们将掷骰子的次数增加到1000,同时创建了空列表frequencies,用来存储每个点出现的次数,再把值附加到frequencies末尾,我们将其效果打印,如下图所示:
6、绘制直方图
有了每个点数的次数列表之后,我们就可以绘制一个表示结果的直方图
在die_visual.py文件添加:
#对结果进行可视化 hist=pygal.Bar() #创建一个实例,并将其储存在hist中 hist.title="Result of rolling one D6 1000 times." #hist标题 hist.x_labels=['1','2','3','4','5','6'] hist.x_title="Result" hist.y_title="Frequency of Result" hist.add('D6',frequencies) #将一系列值添加到图标中 hist.render_to_file('die_visual.svg') #将图标渲染为一个svg文件
找到文件的地址,用浏览器打开die_visual.svg文件效果图如下所示:
7、同时掷两个骰子
前6点都是掷1个骰子,现在我们试着尝试同时掷两个骰子
我们只需对上面的die_visual.py文件进行修改即可,这边我们把die_visual.py文件复制一遍取一个新的文件名dice_visual.py,在dice_visual.py文件中进行修改。
from matp.touzi.die import Die import pygal #创建两个D6骰子 die_1=Die() die_2=Die() #掷几次骰子,并将结果存储在一个列表中 results=[] for roll_num in range(1000): result=die_1.roll()+die_2.roll() results.append(result) #分析结果 frequencies=[] max_result=die_1.num_sides+die_2.num_sides for value in range(1,max_result+1): frequency=results.count(value) frequencies.append(frequency) #对结果进行可视化 hist=pygal.Bar() #创建一个实例,并将其储存在hist中 hist.title="Result of rolling two D6 1000 times." #hist标题 hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12'] hist.x_title="Result" hist.y_title="Frequency of Result" hist.add('D6+D6',frequencies) #将一系列值添加到图标中 hist.render_to_file('dice_visual.svg') #将图标渲染为一个svg文件 #print(frequencies) #print(results)
max_result=die_1.num_sides+die_2.num_sides
两个点数相加最大之和12,存储在max_result当中
效果图如下:
8、同时掷两个面数不同的骰子
上述第7点中掷的是两个相同的D6骰子,现实我们尝试着操作两个不同面得的骰子,掷这两个骰子50000次的结果如何。
新建different_dice.py文件
**from matp.touzi.die import Die import pygal #创建一个D6骰子和D10骰子 die_1=Die() die_2=Die(10) #传递了第二个骰子实参为10 #掷几次骰子,并将结果存储在一个列表中 results=[] for roll_num in range(50000): result=die_1.roll()+die_2.roll() results.append(result) #分析结果 frequencies=[] max_result=die_1.num_sides+die_2.num_sides for value in range(1,max_result+1): frequency=results.count(value) frequencies.append(frequency) #对结果进行可视化 hist=pygal.Bar() #创建一个实例,并将其储存在hist中 hist.title="Result of rolling a D6 and a D10 50000 times." #hist标题 hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'] hist.x_title="Result" hist.y_title="Frequency of Result" hist.add('D6+D10',frequencies) #将一系列值添加到图标中 hist.render_to_file('different_dice.svg') #将图标渲染为一个svg文件 #print(frequencies) #print(results)**
效果图如下:
综上模拟掷骰子完毕!!!
附上完整的die.py和die_visual.py和dice_visual.py和different_dice.py文件
die.py
from random import randint class Die(): """表示一个骰子的类""" def __init__(self, num_sides=6): #_init_()接受一个可选参数,如果没有指定任何实参,面数默认为6 """骰子默认为六面""" self.num_sides = num_sides def roll(self): #方法roll()使用randint()来返回 """返回一个位于1和骰子面熟之间的随机值""" return randint(1,self.num_sides)
die_visual.py
from matp.touzi.die import Die import pygal #创建一个Die实例 die=Die() #掷几次骰子,并将结果存储在一个列表中 results=[] for roll_num in range(1000): result=die.roll() results.append(result) #分析结果 frequencies=[] for value in range(1,die.num_sides+1): frequency=results.count(value) frequencies.append(frequency) #对结果进行可视化 hist=pygal.Bar() #创建一个实例,并将其储存在hist中 hist.title="Result of rolling one D6 1000 times." #hist标题 hist.x_labels=['1','2','3','4','5','6'] hist.x_title="Result" hist.y_title="Frequency of Result" hist.add('D6',frequencies) #将一系列值添加到图标中 hist.render_to_file('die_visual.svg') #将图标渲染为一个svg文件 #print(frequencies) #print(results)
dice_visual.py
from matp.touzi.die import Die import pygal #创建两个D6骰子 die_1=Die() die_2=Die() #掷几次骰子,并将结果存储在一个列表中 results=[] for roll_num in range(1000): result=die_1.roll()+die_2.roll() results.append(result) #分析结果 frequencies=[] max_result=die_1.num_sides+die_2.num_sides for value in range(1,max_result+1): frequency=results.count(value) frequencies.append(frequency) #对结果进行可视化 hist=pygal.Bar() #创建一个实例,并将其储存在hist中 hist.title="Result of rolling two D6 1000 times." #hist标题 hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12'] hist.x_title="Result" hist.y_title="Frequency of Result" hist.add('D6+D6',frequencies) #将一系列值添加到图标中 hist.render_to_file('dice_visual.svg') #将图标渲染为一个svg文件 #print(frequencies) #print(results)
different_dice.py
from matp.touzi.die import Die import pygal #创建一个D6骰子和D10骰子 die_1=Die() die_2=Die(10) #掷几次骰子,并将结果存储在一个列表中 results=[] for roll_num in range(50000): result=die_1.roll()+die_2.roll() results.append(result) #分析结果 frequencies=[] max_result=die_1.num_sides+die_2.num_sides for value in range(1,max_result+1): frequency=results.count(value) frequencies.append(frequency) #对结果进行可视化 hist=pygal.Bar() #创建一个实例,并将其储存在hist中 hist.title="Result of rolling a D6 and a D10 50000 times." #hist标题 hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'] hist.x_title="Result" hist.y_title="Frequency of Result" hist.add('D6+D10',frequencies) #将一系列值添加到图标中 hist.render_to_file('different_dice.svg') #将图标渲染为一个svg文件 #print(frequencies) #print(results)
总结
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]