⑴ python数据可视化--可视化概述
数据可视化是python最常见的应用领域之一,数据可视化是借助图形化的手段将一组数据以图形的形式表达出来,并利用数据分析和开发工具发现其中未知信息的数据处理过程。
在学术界有一句话广为流传,A picture worths thousand words,就是一图值千言。在课堂上,我经常举的例子就是大家在刷朋友圈的时候如果看到有人转发一篇题目很吸引人的文章时,我们都会点击进去,可能前几段话会很认真地看,文章很长的时候后面就会一目十行,失去阅读的兴趣。
所以将数据、表格和文字等内容用图表的形式表达出来,既能提高读者阅读的兴趣,还能直观表达想要表达的内容。
python可视化库有很多,下面列举几个最常用的介绍一下。
matplotlib
它是python众多数据可视化库的鼻祖,也是最基础的底层数据可视化第三方库,语言风格简单、易懂,特别适合初学者入门学习。
seaborn
Seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。
pyecharts
pyecharts是一款将python与echarts结合的强大的数据可视化工具,生成的图表精巧,交互性良好,可轻松集成至 Flask,Sanic,Django 等主流 Web 框架,得到众多开发者的认可。
bokeh
bokeh是一个面向web浏览器的交互式可视化库,它提供了多功能图形的优雅、简洁的构造,并在大型数据集或流式数据集上提供高性能的交互性。
python这些可视化库可以便捷、高效地生成丰富多彩的图表,下面列举一些常见的图表。
柱形图
条形图
坡度图
南丁格尔玫瑰图
雷达图
词云图
散点图
等高线图
瀑布图
相关系数图
散点曲线图
直方图
箱形图
核密度估计图
折线图
面积图
日历图
饼图
圆环图
马赛克图
华夫饼图
还有地理空间型等其它图表,就不一一列举了,下节开始我们先学习matplotlib这个最常用的可视化库。
⑵ 怎么用python画玫瑰花,求大神贴代码,感激不尽
importturtle
#设置初始位置
turtle.penup()
turtle.left(90)
turtle.fd(200)
turtle.pendown()
turtle.right(90)
#花蕊
turtle.fillcolor("red")
turtle.begin_fill()
turtle.circle(10,180)
turtle.circle(25,110)
turtle.left(50)
turtle.circle(60,45)
turtle.circle(20,170)
turtle.right(24)
turtle.fd(30)
turtle.left(10)
turtle.circle(30,110)
turtle.fd(20)
turtle.left(40)
turtle.circle(90,70)
turtle.circle(30,150)
turtle.right(30)
turtle.fd(15)
turtle.circle(80,90)
turtle.left(15)
turtle.fd(45)
turtle.right(165)
turtle.fd(20)
turtle.left(155)
turtle.circle(150,80)
turtle.left(50)
turtle.circle(150,90)
turtle.end_fill()
#花瓣1
turtle.left(150)
turtle.circle(-90,70)
turtle.left(20)
turtle.circle(75,105)
turtle.setheading(60)
turtle.circle(80,98)
turtle.circle(-90,40)
#花瓣2
turtle.left(180)
turtle.circle(90,40)
turtle.circle(-80,98)
turtle.setheading(-83)
#叶子1
turtle.fd(30)
turtle.left(90)
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80,90)
turtle.right(90)
turtle.circle(-80,90)
turtle.end_fill()
turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
turtle.left(90)
turtle.fd(80)
#叶子2
turtle.right(90)
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80,90)
turtle.left(90)
turtle.circle(80,90)
turtle.end_fill()
turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(60)
turtle.right(90)
turtle.circle(200,60)
运行结果:
⑶ 用Python matplotlib 怎么画风向玫瑰图 能给出程序的
importnumpyasnp
importmatplotlib.pyplotasplt
N=20
theta=np.linspace(0.0,2*np.pi,N,endpoint=False)
radii=10*np.random.rand(N)
width=np.pi/4*np.random.rand(N)
ax=plt.subplot(111,projection='polar')
bars=ax.bar(theta,radii,width=width,bottom=0.0)
#Usecustomcolorsandopacity
forr,barinzip(radii,bars):
bar.set_facecolor(plt.cm.jet(r/10.))
bar.set_alpha(0.5)
plt.show()
差不多上面代码的原理,具体的自己照着官方文档改
⑷ 用Python matplotlib 怎么画风向玫瑰图 能给出程序的
python安装(之前写过一篇关于python的安装,这里不重复介绍)
(1) 如何下载?网络---> Python官网
(2) 版本:python-3.4.3.amd64 exe文件直接点哦
(3) 目录:D:\Python34
为python配置了环境变量:D:\Python34\Scripts;D:\Python34
(4) 命令行输入:python 有反应表示成功
说明:matplotlib还没有匹配python3.5的版本,我的电脑为64位
0Python安装学习指南
软件包下载:
因为涉及到众多包的下载,以及其中的版本和电脑位数问题特介绍如下( 注意加粗的字体):
(1) numpy numpy-1.10.1+mkl-cp34-none-win_amd64.whl
(2) matplotlib matplotlib-1.4.3.win-amd64-py3.4b/matplotlib-1.4.3/windows/
(3) 依赖包:pyparsing、dateutil、scipy
声明:以上软件地址可自行网络搜索
附注:图一为matplotlib 、图二为numpy 下载界面的选择
软件包numpy的安装:
1 命令行输入【完整的路径=numpy 在你电脑的绝对路径】
pip install 完整的路径\numpy -1.10.1+mkl-cp34-none-win_amd64.
2 验证:python编辑下 python>>
from numpy import *
安装matplotlib:
matplotlib-1.4.3.win-amd64-py3.4
因为下载的是exe文件,点击一路执行即可
依赖包的安装:
在命令行里逐行输入如下命令:软件包的绝对路径
1 pip install 绝对路径\pyparsing-2.0.3-py3-none-any.whl
2 pip install 绝对路径\python_dateutil-2.4.2-py2.py3-none-any.whl
3 pip install 绝对路径\matplotlib依赖\scipy-0.16.0-cp34-none-win_amd64.whl
验证是否安装成功:
1 在python编辑状态下导入安装的包:
import matplotlib
import numpy
import scipy
import pyparsing
import matplotlib.pyplot as plt
2 如果缺少six
在安装完毕scipy之后把../Python34/Lib/site-packages/scipy/lib中的six.py six.pyc six.pyo三个文件拷贝到.../Python34/Lib/site-packages
案例1:
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y = [0.1, 0.2, 0.2, 0.3, 0.2, 0.1]
y2 = [0.2, 0.2, 0.3, 0.2, 0.3, 0]
plt.plot(x, y, 'b', x, y2, 'g')
plt.show()
案例2:
import matplotlib.pyplot as plt
import math
x=[]
y=[]
num=0.0
while num < math.pi * 4:
y.append(math.sin(num))
x.append(num)
num += 0.1
plt.plot(x, y, 'b')
plt.show()
⑸ python怎么画玫瑰花
操纵海龟绘图有着许多的命令,这些命令可以划分为两种:一种为运动命令,一种为画笔控制命令
1. 运动命令:
forward(degree) #向前移动距离degree代表距离
backward(degree) #向后移动距离degree代表距离
right(degree) #向右移动多少度
left(degree) #向左移动多少度
goto(x,y) #将画笔移动到坐标为x,y的位置
stamp() #复制当前图形
speed(speed) #画笔绘制的速度范围[0,10]整数
2. 画笔控制命令:
down() #移动时绘制图形,缺省时也为绘制
up() #移动时不绘制图形
pensize(width) #绘制图形时的宽度
color(colorstring) #绘制图形时的颜色
fillcolor(colorstring) #绘制图形的填充颜色
fill(Ture)
fill(false)
lucy : 梦想照进现实;露茜;青春风采;
draw_flower1.py
[python]view plain
#-*-coding:cp936-*-
importturtle
importmath
defp_line(t,n,length,angle):
"""Drawsnlinesegments."""
foriinrange(n):
t.fd(length)
t.lt(angle)
defpolygon(t,n,length):
"""Drawsapolygonwithnsides."""
angle=360/n
p_line(t,n,length,angle)
defarc(t,r,angle):
"""."""
arc_length=2*math.pi*r*abs(angle)/360
n=int(arc_length/4)+1
step_length=arc_length/n
step_angle=float(angle)/n
#Beforestartingreces,makingaslightleftturn.
t.lt(step_angle/2)
p_line(t,n,step_length,step_angle)
t.rt(step_angle/2)
defpetal(t,r,angle):
"""Drawsa花瓣usingtwoarcs."""
foriinrange(2):
arc(t,r,angle)
t.lt(180-angle)
defflower(t,n,r,angle,p):
"""Drawsaflowerwithnpetals."""
foriinrange(n):
petal(t,r,angle)
t.lt(p/n)
defleaf(t,r,angle,p):
"""Drawsa叶子andfillit."""
t.begin_fill()#Beginthefillprocess.
t.down()
flower(t,1,40,80,180)
t.end_fill()
defmain():
window=turtle.Screen()#creatascreen
window.bgcolor("blue")
lucy=turtle.Turtle()
lucy.shape("turtle")
lucy.color("red")
lucy.width(5)
lucy.speed(0)
#Drawingflower
flower(lucy,7,60,100,360)
#Drawingpedicel
lucy.color("brown")
lucy.rt(90)
lucy.fd(200)
#Drawingleaf
lucy.rt(270)
lucy.color("green")
leaf(lucy,40,80,180)
lucy.ht()
window.exitonclick()
main()
⑹ python气象绘图windrose
#导入包
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from matplotlib.ticker import FuncFormatter
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] #设置简黑字体
mpl.rcParams['axes.unicode_minus'] = False #设置负号正常显示
#----获取数据DataFrames,index*columns。index表示不同值范围,columns表示十六个风向
data = pd.DataFrame(wind_d_max_num_per,
index=['<15', '15~25', '25~35', '35~45',"≥45"],
columns='N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW'.split())
N = 16 # 风速分布为16个方向
theta = np.linspace(0, 2*np.pi, N, endpoint=False) # 获取16个方向的如手角度值
width = np.pi / 4 * 0.4 # 绘制扇型的宽度,可以自行调整0.5时是360,充满,有间隔的话小于0.5即可
labels = list(data.columns) # 自定义坐标标签为 N , NSN, …渣笑嫌…# 开始绘图
plt.figure(figsize=(6,6),dpi=600)
ax = plt.subplot(111, projection='polar')
#----自定义颜色
mycolor =['cornflowerblue','orange','mediumseagreen','lightcoral','cyan']
#----循环画风玫瑰图
i=0
for idx in data.index:
print(idx)
# 每一行绘制一个扇形
radii = data.loc[idx] # 每一行数据
if i == 0:
ax.bar(theta, radii, width=width, bottom=0.0, label=idx, tick_label=labels,
color=mycolor[i])
else:
ax.bar(theta, radii, width=width, bottom=np.sum(data.loc[data.index[0:i]]), label=idx, tick_label=labels,
color=mycolor[i])
i=i+1
#此种画法,注意bottom设置,第一个bottom为0,后续bottom需要在前一个基础上增加。
ax.set_xticks(theta)
ax.set_xticklabels(labels,fontdict={'weight':'bold','size':15,'color':'k'})
ax.set_theta_zero_location('N') #设置零度方向北
ax.set_theta_direction(-1) # 逆时针方向绘图
#----设置y坐标轴以百分升则数显示
plt.gca().yaxis.set_major_formatter(FuncFormatter(lambda s, position: '{:.0f}%'.format(100*s)))
plt.legend(loc=4, bbox_to_anchor=(0.05, -0.25),fontsize=12) # 将label显示出来, 并调整位置
#----保存图片
plt.savefig("./windrose1.svg")