Python可视化plotly

摘自:链接

1.安装

pip3 install  plotly
pip3 install pandas //如果报出需要安装其他库,请一并安装上

关于静态图,可以移步:链接

2.动态散点图

import plotly.express as px

df = px.data.gapminder()
fig=px.scatter(df, x="gdpPercap", y="lifeExp", animation_frame="year", animation_group="country",
           size="pop", color="continent", hover_name="country",
           log_x=True, size_max=55, range_x=[100,100000], range_y=[25,90])
fig.show()

fig.show()会在浏览器中打开一幅动图:
在这里插入图片描述

3.动态条形图

import plotly.express as px

df = px.data.gapminder()

fig = px.bar(df, x="continent", y="pop", color="continent",
  animation_frame="year", animation_group="country", range_y=[0,4000000000])
fig.show()

在这里插入图片描述

四.静态图

直到这里,还不需要打开Jupyter Notebook。而下面的内容要使用Jupyter Notebook。
我使用的是vscode+Ubuntu20.04LTS。所以要先安装Jupyter

pip3 install jupyter

再找几个Jupyter插件安一下就行了。
然后打开在终端运行:

jupyter notebook

会在浏览器中打开Jupyter Notebook ,点击右边的New即可新建文件。这些应该够了,如果还需要其他操作,请自行百度:https://www.jianshu.com/p/91365f343585
以下是在Jupyter Notebook里进行的python3文件的执行

  1. 拆线图:
# import pkg
from plotly.graph_objs import Scatter,Layout
import plotly
import plotly.offline as py
import numpy as np
import plotly.graph_objs as go

#设置编辑模式
plotly.offline.init_notebook_mode(connected=True)

#制作折线图
N = 150
random_x = np.linspace(0,1,N)
random_y0 = np.random.randn(N)+7
random_y1 = np.random.randn(N)
random_y2 = np.random.randn(N)-7

trace0 = go.Scatter(
    x = random_x,
    y = random_y0,
    mode = 'markers',
    name = 'markers'
)
trace1 = go.Scatter(
    x = random_x,
    y = random_y1,
    mode = 'lines+markers',
    name = 'lines+markers'
)
trace2 = go.Scatter(
    x = random_x,
    y = random_y2,
    mode = 'lines',
    name = 'lines'
)
data = [trace0,trace1,trace2]
py.iplot(data)

显示图如下:
在这里插入图片描述

  1. 条形图
# import pkg
from plotly.graph_objs import Scatter,Layout
import plotly
import plotly.offline as py
import numpy as np
import plotly.graph_objs as go

#设置编辑模式
plotly.offline.init_notebook_mode(connected=True)
# 直方图
trace0 = go.Bar(
    x = ['Jan','Feb','Mar','Apr', 'May','Jun',
         'Jul','Aug','Sep','Oct','Nov','Dec'],
    y = [20,15,25,16,18,28,19,67,12,56,14,27],
    name = 'Primary Product',
    marker=dict(
        color = 'rgb(49,130,189)'
    )
)
trace1 = go.Bar(
    x = ['Jan','Feb','Mar','Apr', 'May','Jun',
         'Jul','Aug','Sep','Oct','Nov','Dec'],
    y = [29,14,32,14,16,19,25,14,10,12,82,16],
    name = 'Secondary Product',
    marker=dict(
        color = 'rgb(204,204,204)'
    )
)
data = [trace0,trace1]
py.iplot(data)

在这里插入图片描述

  1. 散点图
# import pkg
from plotly.graph_objs import Scatter,Layout
import plotly
import plotly.offline as py
import numpy as np
import plotly.graph_objs as go

#设置编辑模式
plotly.offline.init_notebook_mode(connected=True)
# 散点图
trace1 = go.Scatter(
     y = np.random.randn(700),
    mode = 'markers',
    marker = dict(
        size = 16,
        color = np.random.randn(800),
        colorscale = 'Viridis',
        showscale = True
    )
)
data = [trace1]
py.iplot(data)

在这里插入图片描述

五.剖析(摘自:https://www.jianshu.com/p/44416202aafb)

px.scatter(gapminder   # 绘图使用的数据
           ,x="gdpPercap" # 横纵坐标使用的数据
           ,y="lifeExp"
           ,color="continent"  # 区分颜色的属性
           ,size="pop"   # 区分圆的大小
           ,size_max=60  # 圆的最大值
           ,hover_name="country"  # 图中可视化最上面的名字
           ,animation_frame="year"  # 横轴滚动栏的属性year
           ,animation_group="country"
           ,facet_col="continent"   # 按照国家country属性进行分格显示
           ,log_x=True
           ,range_x=[100,100000]
           ,range_y=[25,90]
           ,labels=dict(pop="Populations",  # 属性名字的变化,更直观
                       gdpPercap="GDP per Capital",
                       lifeExp="Life Expectancy"))

在这里插入图片描述

def scatter(data_frame, x=None, y=None, color=None, symbol=None, size=None, 
            hover_name=None, hover_data=None, text=None, facet_row=None, 
            facet_col=None, error_x=None, error_x_minus=None, error_y=None, 
            error_y_minus=None, animation_frame=None, animation_group=None, 
            category_orders={}, labels={}, color_discrete_sequence=None, 
            color_discrete_map={}, color_continuous_scale=None, 
            range_color=None, color_continuous_midpoint=None, 
            symbol_sequence=None, symbol_map={}, opacity=None,
            size_max=None, marginal_x=None, marginal_y=None, trendline=None,
            trendline_color_override=None, log_x=False, log_y=False,
            range_x=None, range_y=None, render_mode='auto', title=None, 
            template=None, width=None, height=None):

    return
data_frame:目标数据,类型为dataframe;
x :指定列名。列中的值用于笛卡尔坐标中沿 X 轴的定位标记。图表类型为水平柱状图时,这些值用作参数histfunc的入参;
y :指定列名。列中的值用于笛卡尔坐标中沿 Y 轴的定位标记。图表类型为垂直柱状图时,这些值用作参数histfunc的入参;
color:指定列名。为列中的不同值,(由px)自动匹配不同的标记颜色;若列为数值数据时,还会自动生成连续色标;
symbol:指定列名。为列中的不同值,设置不同的标记形状;
size:指定列名。为列中的不同值,设置不同的标记大小;
hover_name:指定列名。将列中的值,加粗显示在悬停提示内容的正上方;
hover_data:指定列名组成的列表。所有列的值,显示在悬停提示内容中,位于x/y值的下方。指定的列与x/y重复时仅显示1条数据;
text:指定列名。列中的值,在图的标记中显示为文本标签,同时也显示在悬停提示内容中;
facet_row:指定列名。根据列中不同的(N个)值,在垂直方向上显示N个子图,并在子图右侧,垂直方向上,进行文本标注;
facet_col:指定列名。根据列中不同的(N个)值,在水平方向上显示N个子图,并在子图上方,水平方向上,进行文本标注;
error_x:指定列名。显示误差线,列中的值用于调整 X 轴误差线的大小。如果参数error_x_minus == None,则悬停提示内容中,显示对称的误差值;否则显示正向的误差值。该列通常是基于元数据加工的结果,目的是统计元数据指标的误差值,一般会用元数据除以100的整数倍。
error_x_minus:指定列名。列中的值用于在负方向调整 X 轴误差线的大小,如果参数error_x==None,则直接忽略该参数;
error_y:指定列名。显示误差线,列中的值用于调整 Y 轴误差线的大小。如果参数error_y_minus == None,则悬停提示内容中,显示对称的误差值;否则显示正向的误差值。该列通常是基于元数据加工的结果,目的是统计元数据指标的误差值,一般会用元数据除以100的整数倍。
error_y_minus:指定列名。列中的值用于在负方向调整 Y 轴误差线的大小,如果参数error_y==None,则直接忽略该参数;
animation_frame:指定列名。列中的值用于为动画帧指定标记,即设置滑动条;
animation_group:指定列名。列中的值用于提供跨动画帧的联动匹配;
category_orders:带有字符串键和字符串列表值的字典,默认为{},此参数用于强制每列的特定值排序,dict键是列名,dict值是指定的排列顺序的字符串列表。默认情况下,在Python 3.6+中,轴,图例和构面中的分类值的顺序取决于在data_frame中首次出现的顺序,而在3.6以下的Python中,默认不保证顺序,该参数即为解决此类问题而设计;
labels:带字符串键和字符串值的dict,默认为{}。此参数用于修改图表中显示的列名称。默认情况下,图表中使用列名称作为轴标题、图例条目、悬停提示等,此参数可以进行修改,dict的键是列名,dict值是修改的新名称;
color_discrete_sequence:有效的CSS颜色字符串列表,取自plotly_express的color子模块。当参数color指定的列不是数值数据时,该参数为color列指定颜色序列,若category_orders参数不为None,则按category_orders中设定的顺序循环执行color_discrete_sequence,除非color列的值在参数color_discrete_map入参的dict键中;
color_discrete_map:带字符串键和有效CSS颜色字符串值的dict,默认为{}。当参数color指定的列不是数值数据时,该参数用于将特定颜色分配给,与特定值对应的标记,color_discrete_map中的键为color表示的列值。其优先级高,会覆盖color_discrete_sequence参数中的设置;
color_continuous_scale:有效的CSS颜色字符串列表,取自plotly_express的color子模块。当参数color指定的列是数值数据时,为连续色标,设置指定的颜色序列。实际上,color指定列时,px会自动匹配颜色:1)若指定列是数值数据,通过参数color_continuous_scale可以设定具体的颜色序列;2)若指定列是非数值数据时,通过参数color_discrete_sequence可以设定具体的颜色序列(循环匹配);通过参数color_discrete_map可以为列中不同值,指定具体的颜色;
range_color:2个数字元素组成的列表,参数用于设定连续色标上的自动缩放,即边界的大小值;
color_continuous_midpoint:数字,默认为无。如果设置,则计算连续色标的边界以具有所需的中点。 若使用plotly_express.colors.diverging色标作为color_continuous_scale的如参时,建议设置此值;
symbol_sequence:定义plotly.js符号的字符串列表。参数用于为列中的值分配符号,除非symbol的值是symbol_map中的键。分配符号的顺序:按按category_orders中设置的顺序循环执行;
symbol_map:带字符串键和定义plotly.js符号的字符串值的dict,默认值{}。该参数用于将特定符号分配给,与特定值对应的标记,symbol_map中的键为symbol表示的列值。其优先级高,会覆盖symbol_sequence参数中的设置;
opacity:数字,介于0和1之间,设置标记的不透明度;
size_max:整数,默认为20。使用size参数时,设置最大标记的大小;
marginal_x:字符串,取值:rug(细条)、box(箱图)、violin(小提琴图)、histogram(直方图)。该参数用于在主图上方,绘制一个水平子图,以便对x分布,进行可视化;
marginal_y:字符串,取值:rug(细条)、box(箱图)、violin(小提琴图)、histogram(直方图)。该参数用于在主图右侧,绘制一个垂直子图,以便对y分布,进行可视化;
trendline:字符串,取值:ols、lowess、None。取值为ols时,将为每个离散颜色/符号组,绘制一个普通最小二乘回归线;取值为lowess时,则将为每个离散颜色/符号组,绘制局部加权散点图平滑线;
trendline_color_override:字符串,有效的CSS颜色。如果设置了参数trendline趋势线,则将以此颜色绘制所有趋势线;
log_x:布尔值,默认为False。如果为True,则 X 轴在笛卡尔坐标系中进行对数缩放;
log_y:布尔值,默认为False。如果为True,则 Y 轴在笛卡尔坐标系中进行对数缩放;
range_x:2个数字元素组成的列表,用于设定笛卡尔坐标中 X 轴上的自动缩放,即边界的大小值;
range_y:2个数字元素组成的列表,用于设定笛卡尔坐标中 Y 轴上的自动缩放,即边界的大小值;
render_mode:字符串,取值:auto(默认)、svg、webgl。用于控制绘制标记的浏览器API,svg适用于少于1000的数据,并允许完全矢量化输出;webgl可以接收1000点以上的数据;auto使用启发式方法来选择模式;
title:字符串,设置图表的标题;
template:字符串或Plotly.py模板对象,设置图表的背景颜色。有三个内置的 Plotly 主题: plotly, plotly_white 和 plotly_dark;
width:整数,默认无,设置图表的宽度(以像素为单位);
height:整数,默认600,设置图表的高度(以像素为单位);

六.其他

    scatter:散点图 在散点图中,每行data_frame由2D空间中的符号标记表示;

    scatter_3d:三维散点图 在3D散点图中,每行data_frame由3D空间中的符号标记表示;

    scatter_polar:极坐标散点图 在极坐标散点图中,每行data_frame由极坐标中的符号标记表示;

    scatter_ternary:三元散点图 在三元散点图中,每行data_frame由三元坐标中的符号标记表示;

    scatter_mapbox:地图散点图 在Mapbox散点图中,每一行data_frame都由Mapbox地图上的符号标记表示;

    scatter_geo:地理坐标散点图 在地理散点图中,每一行data_frame都由地图上的符号标记表示;

    scatter_matrix:矩阵散点图 在散点图矩阵(或SPLOM)中,每行data_frame由多个符号标记表示,在2D散点图的网格的每个单元格中有一个,其将每对dimensions彼此相对绘制;

    density_contour:密度等值线图(双变量分布) 在密度等值线图中,行data_frame被组合在一起,成为轮廓标记,以可视化该值的聚合函数histfunc(例如:计数或总和)的2D分布z;

    density_heatmap:密度热力图(双变量分布) 在密度热图中,行data_frame被组合在一起,成为彩色矩形瓦片,以可视化该值的聚合函数histfunc(例如:计数或总和)的2D分布 z;

    line:线条图 在2D线图中,每行data_frame表示为2D空间中折线标记的顶点;

    line_polar:极坐标线条图 在极线图中,每行data_frame表示为极坐标中折线标记的顶点;

    line_ternary:三元线条图 在三元线图中,每行data_frame表示为三元坐标中折线标记的顶点;

    line_mapbox:地图线条图 在Mapbox线图中,每一行data_frame表示为Mapbox地图上折线标记的顶点;

    line_geo:地理坐标线条图 在地理线图中,每一行data_frame表示为地图上折线标记的顶点;

    parallel_coordinates:平行坐标图 在平行坐标图中,每行data_frame由折线标记表示,该折线标记穿过一组平行轴,每个平行轴对应一个平行轴 dimensions;

    parallel_categories:并行类别图 在并行类别(或平行集)图中,每行data_frame与其他共享相同值的行组合,dimensions然后通过一组平行轴绘制为折线标记,每个平行轴对应一个dimensions;

    area:堆积区域图 在堆积区域图中,每行data_frame表示为2D空间中折线标记的顶点。连续折线之间的区域被填充;

    bar:条形图 在条形图中,每行data_frame表示为矩形标记;

    bar_polar:极坐标条形图 在极坐标条形图中,每一行都data_frame表示为极坐标中的楔形标记;

    violin:小提琴图 在小提琴图中,将data_frame每一行分组成一个曲线标记,以便可视化它们的分布;

    box:箱形图 在箱形图中,data_frame的每一行被组合在一起成为盒须标记,以显示它们的分布;

    strip:长条图 在长条图中,每一行data_frame表示为类别中的抖动标记;l

    histogram:直方图 在直方图中,每一行data_frame被组合在一起成为矩形标记,以可视化该值的聚合函数histfunc(例如,计数或总和)的1D分布y(或者x,如果orientation是'h'时);

    choropleth:等高(值)区域地图 在等值区域图中,每行data_frame由地图上的彩色区域标记表示;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值