⑴ 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")