热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

安装python后如何画画_【Python学习】安装Python和绘图示例

从前猫王国里有一只白猫,名叫索菲亚,她学习用Python编程。VameiVamei书写了Python教程系列文章,他是索菲亚的引路人。当时

从前猫王国里有一只白猫,名叫索菲亚,她学习用Python编程。

Vamei

Vamei书写了Python教程系列文章,他是索菲亚的引路人。当时索菲亚写论文,发现用Python所simulation很简洁精美功能强大。

Python是一种解释性编程语言,也就是说不需要生成可执行程序,直接执行脚本(.py文件)。所以Python程序执行时,解释器必须运行。Python3即解释器。这和C不同,C语言是用编辑器(compiler)Github haoel)说网站开发需要用Java。 Python在学术研究和中小型项目很适用。

本文索菲亚介绍Python的绘图功能。内容尽可能地self-contained。所以从安装Python开始写起,并推荐一个神一般存在的Python3教程。

1. 安装Python

索菲亚用MacBook Pro电脑,操作系统是macOS Mojave,Version10.14.5。

由于索菲亚安装Python已经很久了,不是实录,仅仅是介绍官方网站文字

程序安装次第是Xcode、Homebrew、Python、Pip、Jupyter。

安装Xcode(可选)

Xcode是Mac的计算器功能调用环境,即Mac编程环境,通常Mac自带Xcode,便不需要再安装了。

安装Homebrew

Homebrew是Xcode的package manager,即文件下载和安装工具。是不是Mac也自带了?

如果需要安装,安装操作是输入命令:

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装Python 3

安装操作是输入命令:

$ brew install python

安装pip3(可选)

Python 3的package manager工具是pip3(Python 2的package manager工具是pip)。

Python 3自带pip3。请试试以下命令。

pip3 install numpy

通常学术仿真常用的python package还有数据处理scipy,绘图的matplotlib。下文会介绍matplotlib.pyplot。

5.安装Jupyter

脚本editor。用TextEdit就可以编辑Python脚本,但Python对缩进很苛刻,需要专业的editor。

索菲亚查找过、尝试过很多best editors,vi、emacs、IDLE,还有专业程序员常用编辑器,体积巨大。索菲亚最喜欢Jupyter,支持中文注释,事实上,Jupyter有两种输入框(Cell),1)Python代码或2)Markdown。所以对文字的支持强大。

索菲亚认为Mac Terminal中执行Python,确实既可以直接编程,又可以执行脚本文件。而Jupyter也有这两个功能。

安装操作

$ pip3 install "ipython[notebook]"

运行Jupyter,需要switch到目标文件夹,输入命令:

$ python3 -m IPython notebook

可以发现Jupyter在浏览器中执行。该文件夹及其子文件夹是Jupyter的工作文件夹。

上文提到Python对文字的支持强大。推荐一个例子:NetworkX Tutorial这个网页在文末可以下载.ipynb Jupyter文档。下载后,拷贝至Jupyter的工作文件夹,可以双击打开。

现在来尝试新建自己的Python程序。

2. Python 3教程

W3Cschool有一个Python 3教程,very basic,beautiful。而且有一个“赞赏支持”功能,“您的支持将鼓励我们做得更好”。

索菲亚很遗憾自己没有早一点看到这个系列,因为这需要搜索非常基本的关键词才能看到,比如索菲亚恰巧搜索了 "python 数据结构"。(这篇博文从几天前首次写完,每天索菲亚有新发现,然后不停地打补丁,已经看不出来学习路线了。也许该另开一个博文。)

3. 绘图程序

绘图可以用PIL(Python image library)package逐个pixel基础绘图,也可以调用绘图package。

下面的示例参考的是Jackson Gabbard的open sourcenkmk.me有一个优雅、全面的介绍,有大量举例

2.1 基础绘图

在Jupyter 选择合适的文件夹,new python 3,可以看到另一个浏览器窗口untitled,请在左上角rename,比如PillowExamples并在文件夹下产生PillowExamples.ipynd文件,这个文件即源码数据,不再有.py文件。

在命令行(cell)输入Python 代码:

from PIL import Image

#Image坐标原点在左上角,X轴向右,Y轴向下。

#RGB颜色的取值示例0x123456,R是0x56,G是0x34,B是0x12。

#image.putpixel((x, y), 0xff0000)

#image.putpixel((x, y), (r, g, b))

#image.putpixel((x, y), (r, g, b, a)) 如果使用RGBA颜色的话,A是alpha,opacity,100%表示不透明。

img_size = 300

bg_color = 0xFFFFFF #white

im = Image.new('RGB', (img_size, img_size), bg_color)

for y in range(img_size):

for x in range(int(img_size/3)):

im.putpixel((x, y), (0xff, 0, 0xff)) #magenta

for x in range(int(img_size/3),int(img_size*2/3)):

im.putpixel((x, y), (0xff, 0xff, 0))# yellow

for x in range(int(img_size*2/3),img_size):

im.putpixel((x, y), (0, 0xff, 0xff))#cyan

im.show()

另一个示例是在背景图片上写文字,制作一张生日卡片

2.2 调用绘图功能包matplotlib.pyplot

matplotlib.pyplot

plot函数用于画点和线,同时有autoscale功能,即坐标会自动适配展示所绘的图。

import matplotlib.pyplot as plt

plt.plot([1, 2, 3], [1, 4, 9], 'o--')

plt.xlabel('time (s)')

plt.show()

plot还有第三个参数用于规定点和线的风格,还可以用数组表示点,数组需要numpy package。例如,

import numpy as np

import matplotlib.pyplot as plt

# evenly sampled time at 200ms intervals

t = np.arange(0., 5., 0.2)

#t是一维数组, 可以用print(t)观察

# red dashes, blue squares and green triangles

plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')

plt.title('Dots show')

plt.xlabel('time (s)')

plt.ylabel('Functions')

plt.show()

组合型参数'r--'表示red,虚线。其他参数请用英文单词直觉理解。Python 函数的介绍有时不严谨,我想是作者认为脚本语言本身即英文文本说明。

如果画圆

import matplotlib.pyplot as plt

ax = plt.gca()#Get Current Axes

c1=plt.Circle((0, 0), 0.2, color='r', alpha=0.5)

c2=plt.Circle((1, 1), 0.5, color='cyan', alpha=0.5, clip_on=False)

ax.add_patch(c1)

ax.add_patch(c2)

ax.add_artist(plt.Circle((1, 0), 0.5, color='grey', alpha=0.5, clip_on=True))

#The difference between ax.add_patch(..) and ax.add_artist(..)

#of the two, only the former makes autoscaling machinery take the circle into account.

#Use adjustable='box-forced' to make the plot area square-shaped as well.

ax.set_aspect('equal', adjustable='datalim')

ax.plot() #Causes an autoscale update.

plt.show()

如何读一张图片,即如何load一个图片文档。

#参考:

#[1]StackOverFlow, Reading images in python, Asked: Gerges, Answered: Shai Léger, https://stackoverflow.com/questions/48729915/reading-images-in-python

import matplotlib.pyplot as plt

import matplotlib.image as mpimg

img=mpimg.imread('/path/colorwheel2.eps') #请用正确的图片文件路径

imgplot = plt.imshow(img)

参考:



推荐阅读
  • brew 安装mysql_Mac Brew部署 Nginx + php +Mysql + phpMyAdmin 环境
    发布MacOsCatalina简单体验后,有网友私信要一下MacBrew部署NginxphpMysqlphpMyAdmin的步骤,因为部署的时候没有截图 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • linux编写弹球游戏,手把手教你开发一款基于Box2D的弹球游戏(一)
    今天我们来介绍一款物理引擎,并基于它完成一个弹球游戏。提到物理引擎,就是在游戏中模拟真实世界的运动,碰撞,摩擦等等。Coco ... [详细]
  • macpip3安装
    目的:mac安装pip3我的环境:macOSmojave10.14python3.7在Mac上python2和python3是共存的。因而python3对应的包管理工具的命令就是: ... [详细]
  • Objective C接入Sonar代码扫描
    目录技术方案环境准备扫描器配置项目配置SonarQube配置jenkins接入一些坑技术方案Sonar本身有对OC的代码扫描插件——SonarCFamily,但是是收费的。出于成本 ... [详细]
  • brew结合iTerm2花式玩转MacOS软件管理的终端指令
    brew结合iTerm2花式玩转MacOS软件管理的终端指令-1.背景需求  刚拿到新的Mac电脑工作时,linux上很多常用指令是没有的安装的,如wget,git,telnet ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • 最近在使用cocoapods的时候,当输入podinit的时候,iOS项目目录中没有出现对应的Podfile文件.问题描述:使用podinit出现badinterpreter:No ... [详细]
  • 1、前言在macOS下,如果对大量图片进行处理或数据收集,查找了一下,通过使用sips命令,可以进行图片的大部分操作处理,如果使用shell,就可以灵活和自动化的批量操作图片!2、 ... [详细]
  • 尝试使用启动JupyterLabjupyterlab会出现以下错误:AttributeError:ExtensionManager对象 ... [详细]
  • Mac上传代码至GitHub上操作步骤1、下载git(查看是否已经安装了git,未安装则安装git)通过brewinstallgit命令安装git未安装brew请运行以下命令安装b ... [详细]
  • ProtocolBuffers,是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方 ... [详细]
  • php 快速入门的,入门指南PHP 快速入门参考指南
    使用当前稳定版本(7.1)如果你刚开始学习PHP,请使用最新的稳定版本PHP7.1。PHP7.1非常新,相较于5.x版本增加了强大的新特性。PHP引擎大 ... [详细]
author-avatar
川大蛋炒饭-_246
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有