在谈及数据可视化的时候,我们通常都会使用到matplotlylib,pyecharts这些可视化的手段。但是,今天我主要来介绍Plotly这款可视化的库。

  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第1张图片


  这个库是使用js写的前端,所以画出来的图非常的漂亮,不像matplotlylib画出来的那么生硬。plotly提供了Python的支持库,使用pip直接安装就可以:

  pip install plotly

  在python里面使用plotly画图非常的简单,我们先来看一个简单的柱状图例子:

  

复制代码


  import plotly.graph_objects as goanimals=['giraffes', 'orangutans', 'monkeys']fig = go.Figure(data=[ go.Bar(name='SF Zoo', x=animals, y=[20, 14, 23]), go.Bar(name='LA Zoo', x=animals, y=[12, 18, 29])])# Change the bar modefig.update_layout(barmode='group')fig.show()

  

复制代码


  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第2张图片


  使用起来非常的方便,和matplotlylib画图步骤很像,下面我们再来看看一组关于个性化显示的例子:

  利用plotly express自带的数据集,画一个简单的柱状图:

  import plotly.express as pxdata_canada = px.data.gapminder().query("country == 'Canada'")fig = px.bar(data_canada, x='year', y='pop')fig.show()

  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第3张图片


  这样的图看上去还是比较素,我们可以使用参数来自定义条形图的样式:

  

复制代码


  import plotly.express as pxdata = px.data.gapminder()data_canada = data[data.country == 'Canada']fig = px.bar(data_canada, x='year', y='pop', hover_data=['lifeExp', 'gdpPercap'], color='lifeExp', labels={'pop':'population of Canada'}, height=400)fig.show()

  

复制代码


  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第4张图片


  调整样式后会明显发现数据展示会友好很多,能够清楚的看到数据的增长程度。

  除了柱状图之外还有其他的散点图,折线图,饼状图,条形图,箱型图等等(也包含一些热图,登高图,地图分布等等)。

  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第5张图片


  下面,我们使用Python画一些Plolty基本图的Demo:

  (大家如果有需要用Plotly的建议收藏哦!)

  散点图

  散点图核心的价值在于发现变量之间的关系,千万不要简单地将这个关系理解为线性回归关系。变量间的关系有很多,如线性关系、指数关系、对数关系等等,当然,没有关系也是一种重要的关系。散点图更偏向于研究型图表,能让我们发现变量之间隐藏的关系为我们决策作出重要的引导作用。

  import plotly.express as pxfig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])fig.show()

  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第6张图片


  import plotly.express as pxdf = px.data.iris() # px自带数据集fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species", size='petal_length', hover_data=['petal_width'])fig.show()

  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第7张图片


  折线图

  折线图可以显示随时间(根据常用比例设置)而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。比如我们经常看到的监控数据图,一般都是折线图。

  

复制代码


  import plotly.graph_objects as goanimals = ['giraffes', 'orangutans', 'monkeys']fig = go.Figure(data=[ go.Scatter(name='SF Zoo', x=animals, y=[20, 14, 23]), go.Scatter(name='LA Zoo', x=animals, y=[12, 18, 29])])fig.show()

  

复制代码


  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第8张图片


  

复制代码


  import plotly.graph_objects as goimport numpy as npnp.random.seed(1)N = 100random_x = np.linspace(0, 1, N)random_y0 = np.random.randn(N) + 5random_y1 = np.random.randn(N)random_y2 = np.random.randn(N) - 5# Create tracesfig = go.Figure()fig.add_trace(go.Scatter(x=random_x, y=random_y0, mode='lines', name='lines'))fig.add_trace(go.Scatter(x=random_x, y=random_y1, mode='lines+markers', name='lines+markers'))fig.add_trace(go.Scatter(x=random_x, y=random_y2, mode='markers', name='markers'))fig.show()

  

复制代码


  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第9张图片


  饼图

  饼图主要用于总体中各组成部分所占比重的研究,可以很直观地分析项目的组成结构与比重,一目了然地进行描述重量分成。比如我们统计各种开销占总支出多少的时候,这个时候使用饼图可以很明显看出开销的大头。

  import plotly.express as px# This dataframe has 244 lines, but 4 distinct values for `day`df = px.data.tips()fig = px.pie(df, values='tip', names='day')fig.show()

  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第10张图片


  import plotly.express as px# plotly的自带数据集,类型:DataFramedf = px.data.gapminder().query("year == 2007").query("continent == 'Europe'")df.loc[df['pop'] < 2.e6, 'country'] = 'Other countries' # Represent only large countriesfig = px.pie(df, values='pop', names='country', title='Population of European continent')fig.show()

  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第11张图片


  TreeMap(矩形树图)

  矩形树图适合展现具有层级关系的数据,能够直观体现同级之间的比较。一个Tree状结构转化为平面空间矩形的状态,就像一张地图,指引我们发现探索数据背后的故事。

  矩形树图采用矩形表示层次结构里的节点,父子节点之间的层次关系用矩形之间的相互嵌套隐喻来表达。从根节点开始,屏幕空间根据相应的子节点数目被分为多个矩形,矩形的面积大小通常对应节点的属性。每个矩形又按照相应节点的子节点递归的进行分割,知道叶子节点为止。

  import plotly.express as pxfig = px.treemap( names = ["Eve","Cain", "Seth", "Enos", "Noam", "Abel", "Awan", "Enoch", "Azura"], parents = ["", "Eve", "Eve", "Seth", "Seth", "Eve", "Eve", "Awan", "Eve"])fig.show()

  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第12张图片


  水平柱状图

  和纵向柱状图一样,都是用来列举和比较多个个体之间的差值,通过柱状图的长短可以很明显看出数据之间的差别。

  

复制代码


  import plotly.graph_objects as go# 修改水平参数即可fig = go.Figure(go.Bar( x=[20, 14, 23], y=['giraffes', 'orangutans', 'monkeys'], orientation='h'))fig.show()

  

复制代码


  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第13张图片


  箱型图

  箱形图(Box-plot)又称为盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。在各种领域也经常被使用,常见于品质管理。它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。

  import plotly.express as pxdf = px.data.tips()fig = px.box(df, x="time", y="total_bill")fig.show()

  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第14张图片


  等高线图

  有二维、三维等高线图。在数据分析中,高度表示为该点的数量或出现次数,该指标相同则在一条环线(或高度)处。

  

复制代码


  import plotly.graph_objects as gofig = go.Figure(data = go.Contour( z=[[10, 10.625, 12.5, 15.625, 20], [5.625, 6.25, 8.125, 11.25, 15.625], [2.5, 3.125, 5., 8.125, 12.5], [0.625, 1.25, 3.125, 6.25, 10.625], [0, 0.625, 2.5, 5.625, 10]] ))fig.show()

  

复制代码


  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第15张图片


  热图

  热图是指用热谱图展示用户在网站上的行为。浏览量大、点击量大的地方呈红色,浏览量小、点击量少的地方呈无色、蓝色。常见热图共有点击热图、注意力热图、分析热图、对比热图、分享热图、浮层热图和历史热图等七种。

  

复制代码


  import plotly.express as pxdata=[[1, 25, 30, 50, 1], [20, 1, 60, 80, 30], [30, 60, 1, 5, 20]]fig = px.imshow(data, labels=dict(x="Day of Week", y="Time of Day", color="Productivity"), x=['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'], y=['Morning', 'Afternoon', 'Evening'] )fig.update_xaxes(side="top")fig.show()

  

复制代码


  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第16张图片


  三元图

  三元图,又称三元相图(Ternary plot)有三个坐标轴,它的三个坐标轴“首尾相接”成夹角为60度的等边三角形。“元”即成分,或部分,三元图主要用来展示不同样本的三种成分的比例,在物理化学中比较常见。

  import plotly.express as pxdf = px.data.election()fig = px.scatter_ternary(df, a="Joly", b="Coderre", c="Bergeron")fig.show()

  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第17张图片


  雷达图

  雷达图以二维的形式展现了多维数据,使观察者可以一目了然地得知对象在各种指标上的强弱,最典型的就是游戏中衡量一个角色多维度的能力值。

  

复制代码


  import plotly.express as pximport pandas as pddf = pd.DataFrame(dict( r=[1, 5, 2, 2, 3], theta=['processing cost','mechanical properties','chemical stability', 'thermal stability', 'device integration']))fig = px.line_polar(df, r='r', theta='theta', line_close=True)fig.show()

  

复制代码


  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第18张图片


  极坐标图

  极坐标图主要作用就是可在一张图上绘出整个频率域的频率响应特性。

  import plotly.express as pxdf = px.data.wind()fig = px.scatter_polar(df, r="frequency", theta="direction")fig.show()

  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第19张图片


  瀑布图

  瀑布图,因为形似瀑布流水而称之为瀑布图( Waterfall Plot)。此种图表采用绝对值与相对值结合的方式,适用于表达数个特定数值之间的数量变化关系。

  

复制代码


  郑州割包皮哪个医院好:http://www.zztongji120.com/郑州哪里割包皮便宜:http://www.zztongji120.com/郑州哪家医院包皮手术好:http://www.zztongji120.com/

  import plotly.graph_objects as gofig = go.Figure(go.Waterfall( name = "20", orientation = "v", measure = ["relative", "relative", "total", "relative", "relative", "total"], x = ["Sales", "Consulting", "Net revenue", "Purchases", "Other expenses", "Profit before tax"], textposition = "outside", text = ["+60", "+80", "", "-40", "-20", "Total"], y = [60, 80, 0, -40, -20, 0], connector = {"line":{"color":"rgb(63, 63, 63)"}},))fig.update_layout( title = "Profit and loss statement 2020", showlegend = True)fig.show()

  

复制代码


  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第20张图片


  漏斗图

  一般表述转化率(如营销客户转化),由上而下代表不同层级,转化率逐级降低并形成漏斗形状。

  import plotly.express as pxdata = dict( number=[39, 27.4, 20.6, 11, 2], stage=["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent"])fig = px.funnel(data, x='number', y='stage')fig.show()

  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第21张图片


  气泡分布图(含配置底图)

  import plotly.express as pxdf = px.data.gapminder().query("year==2007")fig = px.scatter_geo(df, locations="iso_alpha", color="continent", hover_name="country", size="pop", projection="natural earth")fig.show()

  

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)_第22张图片