python绘制简单图形-python绘制数学图形(堪比matlab)

在开始之前,我要对latex做一点补充。

上一篇文章中提到了latex绘制流程图,文中给出了一个实例,在具体的应用上也很简单。下面两个网页可能会比较有用,特别是在流程图的绘制上(各类shapes汇总):

流程图判断——菱形,其变扁的方法:

下面开始今天要说到的主题。matlab固然很牛叉,但是在理解和实现上还是相对复杂的,python利用现有的库,基本可以实现matlab所有的功能,甚至超越之。与前面的文章相对应,python绘图应该主要着眼的是一些比较严谨的数学公式的绘制问题,相对于latex,其图形更加有数学之美。

今天晚上,我又整了一下python的绘图,感觉还是比较方便的,50行不到的代码即可实现比较完美的图形,特别推荐。下面对应的依次是图形和代码:

rcc.jpg

对应的代码很简单:

#!/usr/bin/python

#coding = utf8

import sys

import string

import numpy as np

import matplotlib.pyplot as plt

def f_fun(d, k, i):

a = (2.0*d)/((2.0*k-i-1.0)*i+2.0*k*(d-k+1.0))

return a

def g_fun(d, k, i):

a = (2.0*d-2.0*k+i+1.0)*i*1.0/(2.0*d)

return a

def main():

form = ['ro-', 'b--<', 'g-*', 'y--s', 'c->']

k = 5

d = [9, 8, 7, 6, 5]

x = y = [1.0/k]

for t in range(5):

r = [f_fun(d[t], k, i) for i in range(k-1, -1, -1)]

a = [((1.0-g_fun(d[t], k, i)*r[k-i-1])*1.0/(k-i)) for i in range(k-1, 0, -1)]

a.append(1.0/k)

x.append(r[0])

y.append(a[0])

plt.plot(r, a, form[t], linewidth = 2.0, label = "$d="+str(d[t])+",n=10,k=5$")

plt.plot(x, y, linewidth = 1.2, color = 'black')

plt.plot([1.0], [1.0/k], 'rs')

plt.annotate("MDS point", xy=(1.0, 1.0/k), xycoords = 'data', xytext=(0.8, 0.25), arrowprops=dict(arrowstyle="->", linewidth = 1.2))

#plt.plot([1.0], [1.0/k], 'rs')

plt.legend(loc='upper right')

plt.title("Storage-Communication tradeoff n=10,k=5,d=5~9,B=1MB")

plt.ylabel("Storage per node $\alpha$")

plt.xlabel("Bandwidth to repair one node $\gamma$")

plt.grid(True)

plt.show()

if __name__ == '__main__':

main()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值