利用Python绘制好看的玫瑰花图

拾柒
拾柒
发布时间:2026-10-15| 3人浏览过
原创

本文介绍如何使用Python的pyecharts库绘制极坐标下的数学图形,包括基本极坐标散点图、柱状图以及利用正弦函数生成的玫瑰花图。通过配置AngleAxisOpts和TooltipOpts等参数,展示如何生成美观的极坐标可视化效果。

本文主要介绍如何使用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为一个列表,其中每个元素是一个包含两个数值的元组。第一个数值代表半径,第二个数值代表角度,这样便于理解其几何意义。

此外,还可以将图表类型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相关图形绘制资料请关注本站其他文章。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。