首頁 > 軟體

利用Python繪製好看的玫瑰花圖

2022-05-24 14:01:02

今天主要給大家介紹如何用pyecharts畫各種漂亮的數學圖形

一、基本極座標圖

說簡單點,基本極座標圖就是圓形的散點圖(柱狀圖或折線圖),程式碼如下:

import random
from pyecharts import options as opts
from pyecharts.charts import Polar
data = [(i, random.randint(1, 100)) for i in range(101)]
c = (
    Polar()
    .add("", data, type_="scatter", label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="基本極座標圖"))
)
c.render_notebook()

資料data是1個列表,列表內的元素為元組,單個元組有2個資料,第一個資料為半徑,第二個資料相當於角度,這樣就好理解了

也可把type改為bar

c = (
    Polar()
    .add("", data, type_="bar", label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="基本極座標圖"))
)
c.render_notebook()

同理也可以改成折線(line)等,大家可以自己嘗試一下。

二、極半徑圖

在極座標中引入柱狀圖

from pyecharts import options as opts
from pyecharts.charts import Polar
from pyecharts.faker import Faker
c = (
    Polar()
    .add_schema(
        radiusaxis_opts=opts.RadiusAxisOpts(data=Faker.week,  #資料項
                                            type_="category"  #座標軸型別,類目軸,適用於離散的類目資料,為該型別時必須通過 data 設定類目資料。
                                           ),
        angleaxis_opts=opts.AngleAxisOpts(is_clockwise=True, #是否順時針排布
                                          max_=10            #座標軸刻度最大值
                                         ),
    )
    .add("A", [1, 2, 3, 4, 3, 5, 1], type_="bar")
    .set_global_opts(title_opts=opts.TitleOpts(title="Polar-RadiusAxis"))
)
c.render_notebook()

引數介紹

RadiusAxisOpts:極座標系徑向軸設定項

AngleAxisOpts:極座標系角度軸設定項

三、畫玫瑰花圖

首先我們要引入數學中的sin函數,假設角度為theta,則長度為n(m+sin(theta)),n和m都為常數,那麼元組(長度,角度)就可以在極座標中確定一個點,把一系列的點放入列表中,並用折線圖連線起來,就可以畫出漂亮的數學圖形。

import math
import pyecharts.options as opts
from pyecharts.charts import Polar
data = []
for i in range(0, 101):
    theta = i / 100 * 360
    r = 5 * (1 + math.sin(theta / 180 * math.pi))
    data.append([r, theta])
c=(
    Polar()
    .add(series_name="line", data=data, label_opts=opts.LabelOpts(is_show=False))
    .add_schema(
        angleaxis_opts=opts.AngleAxisOpts(
            start_angle=0, type_="value", is_clockwise=True
        )
    )
    .set_global_opts(
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
        title_opts=opts.TitleOpts(title="極座標雙數值軸"),
    )
)
c.render_notebook()

AngleAxisOpts引數介紹:

start_angle:極座標開始的角度

type_:座標軸型別,'value'表示數值軸,適用於連續資料

is_clockwise:是否為順時針

TooltipOpts引數介紹:

trigger:觸發型別,'axis'表示座標軸觸發,主要在柱狀圖,折線圖等會使用類目軸的圖表中使用

axis_pointer_type:指示器型別,'cross'表示十字準星指示器

開始畫玫瑰花圖

import math

from pyecharts import options as opts
from pyecharts.charts import Polar
data = []
for i in range(401):
    t = i / 180 * math.pi
    r = math.sin(9*t)
    data.append([r, i])
c = (
    Polar()
    .add_schema(angleaxis_opts=opts.AngleAxisOpts(start_angle=0, min_=0))
    .add("flower", data, label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="Polar-Flower"))
)
c.render_notebook()

是不是很漂亮,利用這種方法還可以畫出更多漂亮的圖形,趕緊動手試試吧!

以上就是利用Python繪製好看的玫瑰花圖的詳細內容,更多關於Python玫瑰花圖的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com