[pyecharts學習筆記]——Scatter散點圖

先看對y軸的一些屬性設置

def add_yaxis(
    # 系列名稱,用於 tooltip 的顯示,legend 的圖例篩選。
    series_name: str,

    # 系列數據
    y_axis: Sequence,

    # 是否選中圖例
    is_selected: bool = True,

    # 使用的 x 軸的 index,在單個圖表實例中存在多個 x 軸的時候有用。
    xaxis_index: Optional[Numeric] = None,

    # 使用的 y 軸的 index,在單個圖表實例中存在多個 y 軸的時候有用。
    yaxis_index: Optional[Numeric] = None,

    # 系列 label 顏色
    color: Optional[str] = None,

    # 標記的圖形。
    # ECharts 提供的標記類型包括 'circle', 'rect', 'roundRect', 'triangle', 
    # 'diamond', 'pin', 'arrow', 'none'
    # 可以通過 'image://url' 設置爲圖片,其中 URL 爲圖片的鏈接,或者 dataURI。
    symbol: Optional[str] = None,

    # 標記的大小,可以設置成諸如 10 這樣單一的數字,也可以用數組分開表示寬和高,
    # 例如 [20, 10] 表示標記寬爲 20,高爲 10。
    symbol_size: Numeric = 10,

    # 標記的旋轉角度。注意在 markLine 中當 symbol 爲 'arrow' 時會忽略 symbolRotate 強制設置爲切線的角度。
    symbol_rotate: types.Optional[types.Numeric] = None,

    # 標籤配置項,參考 `series_options.LabelOpts`
    label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(position="right"),

    # 標記點配置項,參考 `series_options.MarkPointOpts`
    markpoint_opts: Union[opts.MarkPointOpts, dict, None] = None,

    # 標記線配置項,參考 `series_options.MarkLineOpts`
    markline_opts: Union[opts.MarkLineOpts, dict, None] = None,

    # 提示框組件配置項,參考 `series_options.TooltipOpts`
    tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,

    # 圖元樣式配置項,參考 `series_options.ItemStyleOpts`
    itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,

    # 可以定義 data 的哪個維度被編碼成什麼。
    encode: types.Union[types.JSFunc, dict, None] = None,
)

1.顯示分割線(網格線)

在這裏插入圖片描述

from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.faker import Faker

c = (
    Scatter()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Scatter-顯示分割線"),
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),
        yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),
    )
    .render("C:/scatter_splitline.html")
)

2.Basic_scatter_chart

在這裏插入圖片描述

import pyecharts.options as opts
from pyecharts.charts import Scatter 

# X,Y數據
data = [
    [10.0, 8.04],
    [8.0, 6.95],
    [13.0, 7.58],
    [9.0, 8.81],
    [11.0, 8.33],
    [14.0, 9.96],
    [6.0, 7.24],
    [4.0, 4.26],
    [12.0, 10.84],
    [7.0, 4.82],
    [5.0, 5.68],
]
# 對X數據排序
data.sort(key=lambda x: x[0])
x_data = [d[0] for d in data]  # x數據
y_data = [d[1] for d in data]  # y數據
c = (
     #散點圖
     #初始化
    Scatter(init_opts=opts.InitOpts(width="900px", height="600px"))
    .add_xaxis(xaxis_data=x_data)
    .add_yaxis(
        # 系列名稱
        series_name="",
        # 系列數據
        y_axis=y_data,
        # 標記的大小
        symbol_size=20,
        # 標記的圖形 
        symbol = None,
        # 是否選中圖例
        is_selected = True,
        # 系列 label 顏色
        color = '#00CCFF',
        # 標籤配置項
        label_opts=opts.LabelOpts(is_show=False), #不顯示標籤
    )
    #系統配置項
    .set_series_opts()
    #全局配置項
    .set_global_opts(
        #x軸配置
        xaxis_opts=opts.AxisOpts(
            name ='x軸',
            name_location = 'center',
            name_gap = 15,
            # 座標軸類型 'value': 數值軸
            type_="value", 
            # 分割線配置項
            splitline_opts=opts.SplitLineOpts(is_show=True) #顯示分割線
        ),
        #y軸配置
        yaxis_opts=opts.AxisOpts(
            name ='y軸',
            # 座標軸類型 'value': 數值軸
            type_="value",
            # 座標軸刻度配置項
            axistick_opts=opts.AxisTickOpts(is_show=True),#顯示刻度
            # 分割線配置項
            splitline_opts=opts.SplitLineOpts(is_show=True),#顯示分割線
        ),
        # 提示框配置項
        tooltip_opts=opts.TooltipOpts(is_show=False), # 不顯示提示框組件
    )
    .render("C:/basic_scatter_chart.html")
)

3.Scatter-多維度數據

在這裏插入圖片描述

from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.commons.utils import JsCode
from pyecharts.faker import Faker

c = (
    Scatter()
    .add_xaxis(Faker.choose())
    .add_yaxis(
        "商家A",
        [list(z) for z in zip(Faker.values(), Faker.choose())],
        # 標記的大小
        symbol_size=20,
        #標籤配置項
        label_opts=opts.LabelOpts(
            # 回調函數,回調函數格式:
            # (params: Object|Array) => string
            # 參數 params 是 formatter 需要的單個數據集。格式如下:
            # {
            #    componentType: 'series',
            #    // 系列類型
            #    seriesType: string,
            #    // 系列在傳入的 option.series 中的 index
            #    seriesIndex: number,
            #    // 系列名稱
            #    seriesName: string,
            #    // 數據名,類目名
            #    name: string,
            #    // 數據在傳入的 data 數組中的 index
            #    dataIndex: number,
            #    // 傳入的原始數據項
            #    data: Object,
            #    // 傳入的數據值
            #    value: number|Array,
            #    // 數據圖形的顏色
            #    color: string,
            # }
            formatter=JsCode(
                # 構造回調函數
                "function(params){return params.value[1] +' : '+ params.value[2];}"
            )  #params.value[1]對應y軸Faker.values() :  params.value[2]對應y軸Faker.choose()
        ),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Scatter-多維度數據"),
         # 提示框配置項
        tooltip_opts=opts.TooltipOpts(
            formatter=JsCode(
                # 構造回調函數
                "function (params) {return params.name + ' : ' + params.value[2];}"
            )  #params.name對應x軸的Faker.choose() : params.value[2]對應y軸Faker.choose()
        ),
        # 視覺映射配置項
        visualmap_opts=opts.VisualMapOpts(
            #顏色映射
            type_="color", 
            max_=150, 
            min_=20, 
            dimension=1  ## 組件映射維度
        ),
    )
    .render("C:/scatter_multi_dimension.html")
)

顏色映射

暫時不知道怎麼把第三變量映射到顏色中,目前映都是y軸數據
在這裏插入圖片描述

from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.faker import Faker

c = (
    Scatter()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values(),symbol_size=20)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Scatter-VisualMap(Color)"),
        visualmap_opts=opts.VisualMapOpts(
            type_='color',
            max_=150,
            pos_bottom = 50,pos_right = 0),
    )
    .render("C:/scatter_visualmap_color.html")
)

大小映射

在這裏插入圖片描述

from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.faker import Faker

c = (
    Scatter()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Scatter-VisualMap(Size)"),
        
        visualmap_opts=opts.VisualMapOpts(
            type_="size",  #映射大小
            max_=150,
            min_=20,
            pos_bottom = 50,pos_right = 0),
    )
    .render("C:/scatter_visualmap_size.html")
)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章