Fork me on GitHub

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

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

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

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

保存路径

改变路径

需要导入的库是os模块

  • .plot方法可以在指定位置生成
  • .iplot方法在notebook中生成
1
2
3
4
import plotly as py
import plotly.graph_objects as go
from plotly.graph_objects import Scatter,Bar
py.offline.init_notebook_mode() # notebook里面直接生成图片

改变颜色

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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")

绘制双坐标轴

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 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工具如何制作子图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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()

本文标题:plotly-express-16-绘制技巧(一)

发布时间:2020年07月09日 - 16:07

原始链接:http://www.renpeter.cn/2020/07/09/plotly-express-16-%E7%BB%98%E5%88%B6%E6%8A%80%E5%B7%A71.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea