前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >plotly-express-16-绘制技巧(一)

plotly-express-16-绘制技巧(一)

作者头像
皮大大
发布2021-03-01 15:59:10
1.2K0
发布2021-03-01 15:59:10
举报
文章被收录于专栏:机器学习/数据可视化

Plotly-express-16-绘制技巧(一)

本文中介绍的是利用Plotly绘图小技巧:

  • 图片的保存:jupyter notebook下的保存和指定路径下的保存
  • 柱状图的颜色改变(避免同样的颜色过于单调)
  • 双坐标轴图形的绘制
  • 子图制作

保存路径

改变路径

需要导入的库是os模块

  • .plot方法可以在指定位置生成
  • .iplot方法在notebook中生成
代码语言:javascript
复制
import plotly as py
import plotly.graph_objects as go
from plotly.graph_objects import Scatter,Bar
py.offline.init_notebook_mode()   # notebook里面直接生成图片
改变颜色
代码语言:javascript
复制
import random
import plotly as py
import plotly.graph_objects as go
from plotly.graph_objects import Scatter,Bar
py.offline.init_notebook_mode()   # notebook里面直接生成图片


# 生成颜色的函数
def random_color_generator(number_of_colors):
    color = ["#"+''.join([random.choice('0123456789ABCDEF') for j in range(6)])
                 for i in range(number_of_colors)]
    return color


# add data
trace0 = Scatter(x=[1,2,3,4],
                 y=[2,4,6,8])

# 改变每个柱状图的颜色
trace1 = Bar(x=[2,3,4,5],
             y=[10,12,16,20],
             marker=dict(color=random_color_generator(4)), # 使用随机函数生成4个颜色 ,改变柱状图的颜色
             opacity=0.7
            )

data = [trace0,trace1]


# add layout
layout = go.Layout(title="basic figure by using plotly",
                  xaxis=dict(title="x轴数据"),
                  yaxis=dict(title="y轴数据"),
                  legend=dict(x=1,y=0.5,font=dict(size=20, color="black")))

# add figure
fig = go.Figure(data=data, layout=layout)

# generate figure
fig.show(render="svg")

绘制双坐标轴

代码语言:javascript
复制
# df.sort_values("产量",ascending=False):将产量进行降序排列,图形更直观
# 排序函数:sort_values("col",ascending=True)  根据某个字段,默认是升序

trace1 = go.Bar(
    x=df.sort_values("产量",ascending=False)["地区"].values.tolist(),
    y=df.sort_values("产量",ascending=False)["产量"].values.tolist(),
    marker=dict(color=random_color_generator(6)),
    # 指定显示的文本,类似y值
    text=df.sort_values("产量",ascending=False)["产量"].values.tolist(),
    textposition="outside",  # 文本的位置
    opacity=0.5,
    name="地区订单数量"
)

trace2 = go.Scatter(
    x=df["地区"].values.tolist(),
    y=df["财政收入"].values.tolist(),
    mode="markers",
    marker=dict(color=random_color_generator(6)),
    opacity=0.5,
    name="地区财政收入",
    yaxis="y2"   # 这是第二条y轴
)

data = [trace1,trace2]  # 添加图形的轨迹数据

layout = go.Layout(title="不同地区的订单数量",
                   xaxis=dict(title="地区"),   # 共用x轴
                   yaxis=dict(title="地区订单数量"),  # 第一条y轴的名字
                   yaxis2=dict(title="地区财政收入",overlaying="y", side="right"),   # 第二条y轴的名字,堆叠位置(与y相同),位置在右边
                   legend=dict(x=0.8,y=0.9,font=dict(size=12,color="red"))  # 图例的位置(图形看做一个单位长度),大小和字体颜色
                  )

fig = go.Figure(data=data,layout=layout)

fig.show()

子图制作

介绍利用plotly中的tools工具如何制作子图

代码语言:javascript
复制
from plotly import tools   # 导入工具

fig = tools.make_subplots(rows=2,cols=1)  # 2*1的子图

# ----------------
trace1 = go.Bar(
    x=df.sort_values("产量",ascending=False)["地区"].values.tolist(),
    y=df.sort_values("产量",ascending=False)["产量"].values.tolist(),
    marker=dict(color=random_color_generator(6)),
    # 指定显示的文本,类似y值
    text=df.sort_values("产量",ascending=False)["产量"].values.tolist(),
    textposition="outside",  # 文本的位置
    opacity=0.5,
    name="地区订单数量"
)

sz = np.random.rand(100) * 30

trace2 = go.Scatter(
    x=df["地区"].values.tolist(),
    y=df["财政收入"].values.tolist(),
    mode="markers",
    marker=dict(color=random_color_generator(6),
		        size=sz,
				opacity=0.5,
				colorscale="Viridis"
		),
    name="地区财政收入",
    yaxis="y2"   # 这是第二条y轴
)

# -----------------------
# 添加数据轨迹
fig.append_trace(trace1,1,1)
fig.append_trace(trace2,2,1)

# 修改fig的布局
fig["layout"].update(height=600,width=800,title="子图制作")
fig.show()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-7-9,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Plotly-express-16-绘制技巧(一)
  • 保存路径
    • 改变路径
      • 改变颜色
      • 绘制双坐标轴
      • 子图制作
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档