密谋:创建具有类别x轴抖动和多级轴的散点图

丹尼尔·扎帕塔(Daniel Zapata)

我想制作一个具有多级x轴的图形,如下图所示: 多级分散

import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(
  go.Scatter(
    x = [df['x'], df['x1']],
    y = df['y'],
    mode='markers'
  )
)

但我也想像下一张图片一样在x轴上放置抖动: 在此处输入图片说明

到目前为止,我可以使用以下代码独立制作每个图形:

import plotly.express as px
fig = px.strip(df,
               x=[df["x"], df['x1']], 
               y="y",
               stripmode='overlay') 

是否可以在一个图中组合抖动和多级轴?

这是用于重现数据集的代码:

import numpy as np
import pandas as pd
import random

'''Create DataFrame'''
price = np.append(
  np.random.normal(20, 5, size=(1, 50)), np.random.normal(40, 2, size=(1, 10))
)
quantity = np.append(
  np.random.randint(1, 5, size=(50)), np.random.randint(8, 12, size=(10))
)

firstLayerList = ['15 in', '16 in']
secondLayerList = ['1/2', '3/8']
vendorList = ['Vendor1','Vendor2','Vendor3']

data = {
  'Width':  [random.choice(firstLayerList) for i in range(len(price))],
  'Length': [random.choice(secondLayerList) for i in range(len(price))],
  'Vendor': [random.choice(vendorList) for i in range(len(price))],
  'Quantity': quantity,
  'Price':  price
}
df = pd.DataFrame.from_dict(data)
S3DEV

首先-感谢您的挑战!这些天来,Plotly的挑战性问题并不多。

创建具有抖动的散点图的关键元素是:

  • 使用mode: 'box'-创建箱形图,而不是散点图。
  • 设置'boxpoints': 'all'-绘制所有点。
  • Using 'pointpos': 0 - to center the points on the x-axis.
  • Removing (hiding!) the whisker boxes using:
    • 'fillcolor': 'rgba(255,255,255,0)'
    • 'line': {'color': 'rgba(255,255,255,0)'}

DataFrame preparation:

This code simply splits the main DataFrame into a frame for each vendor, thus allowing a trace to be created for each, with their own colour.

df1 = df[df['Vendor'] == 'Vendor1']
df2 = df[df['Vendor'] == 'Vendor2']
df3 = df[df['Vendor'] == 'Vendor3']

Plotting code:

The plotting code could use a for-loop if you like. However, I've intentionally kept it more verbose, so as to increase clarity.

import plotly.io as pio

layout = {'title': 'Categorical X-Axis, with Jitter'}
traces = []

traces.append({'x': [df1['Width'], df1['Length']], 'y': df1['Price'], 'name': 'Vendor1', 'marker': {'color': 'green'}})
traces.append({'x': [df2['Width'], df2['Length']], 'y': df2['Price'], 'name': 'Vendor2', 'marker': {'color': 'blue'}})
traces.append({'x': [df3['Width'], df3['Length']], 'y': df3['Price'], 'name': 'Vendor3', 'marker': {'color': 'orange'}})

# Update (add) trace elements common to all traces.
for t in traces:
    t.update({'type': 'box',
              'boxpoints': 'all',
              'fillcolor': 'rgba(255,255,255,0)',
              'hoveron': 'points',
              'hovertemplate': 'value=%{x}<br>Price=%{y}<extra></extra>',
              'line': {'color': 'rgba(255,255,255,0)'},
              'pointpos': 0,
              'showlegend': True})

pio.show({'data': traces, 'layout': layout})

Graph:

The data behind this graph was generated using np.random.seed(73), against the dataset creation code posted in the question.

在此处输入图片说明

Comments (TL;DR):

此处显示的示例代码使用较低级别的Plotly API,而不是诸如graph_objects的便利包装express原因是我(个人)认为,对用户“幕后”展示正在发生的事情有所帮助,而不是用便捷包装掩盖底层的代码逻辑。

这样,当用户需要修改图形的更详细信息时,他们将更好地理解Plotly为基础图形引擎(orca)构建lists和dicts。

这个用例是这种推理主要示例,因为它已经超出了(当前)设计点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在R中为每个x轴值创建具有多个y轴值的散点图?

来自分类Dev

没有 x 轴的散点图

来自分类Dev

在 Plotly 中创建具有共享 Y 轴的小提琴图和散点图

来自分类Dev

如何创建具有多个Y轴和公共X轴的堆叠JavaFX图表

来自分类Dev

禁用散点图抖动上的网格和轴标签

来自分类Dev

在Python中,如何绘制具有相同x和y轴的不同类别的数据?

来自分类Dev

具有“超级类别”或“标题”的X轴标签

来自分类Dev

如何使用r中的plot()在x轴上创建具有有序字符变量的散点图?

来自分类Dev

highchart-散点图:设置x轴和y轴的小数

来自分类Dev

MATLAB中具有图的多个x轴和y轴

来自分类Dev

在 Matlab 中绘制具有不同(indep)限制的 x 轴和 y 轴

来自分类Dev

如何在R中具有多个轴的散点图

来自分类Dev

具有直方图轴的散点图中的颜色密度

来自分类Dev

Excel Mac-创建带有两列的X轴和Y轴值的图形

来自分类Dev

在具有动态x轴类别的Highcharts工具提示中添加其他数据

来自分类Dev

将散点图和箱形图的X轴对齐

来自分类Dev

将散点图和箱形图的X轴对齐

来自分类Dev

如何在x轴上具有两个类别的R中手动创建箱形图

来自分类Dev

ggplot2 dotplot如何创建空的x轴类别

来自分类Dev

ggvis:具有整数刻度的x轴

来自分类Dev

具有共享x轴的Seaborn图

来自分类Dev

避免在 matplotlib 中按 X 轴排序并绘制具有多个 y 轴的公共 X 轴

来自分类Dev

更改X轴折线图抖动

来自分类Dev

同时具有第二个x轴和第二个y轴的晶格图?

来自分类Dev

如何在具有一个 x 轴和两个 y 轴的图中将误差线缩放到右侧 y 轴的尺寸

来自分类Dev

密谋:如何从x轴上删除空日期?

来自分类Dev

Python Matplotlib散点图添加x轴标签

来自分类Dev

分组的散点图,Excel中的分类X轴

来自分类Dev

在散点图中更改x轴的xticks

Related 相关文章

  1. 1

    在R中为每个x轴值创建具有多个y轴值的散点图?

  2. 2

    没有 x 轴的散点图

  3. 3

    在 Plotly 中创建具有共享 Y 轴的小提琴图和散点图

  4. 4

    如何创建具有多个Y轴和公共X轴的堆叠JavaFX图表

  5. 5

    禁用散点图抖动上的网格和轴标签

  6. 6

    在Python中,如何绘制具有相同x和y轴的不同类别的数据?

  7. 7

    具有“超级类别”或“标题”的X轴标签

  8. 8

    如何使用r中的plot()在x轴上创建具有有序字符变量的散点图?

  9. 9

    highchart-散点图:设置x轴和y轴的小数

  10. 10

    MATLAB中具有图的多个x轴和y轴

  11. 11

    在 Matlab 中绘制具有不同(indep)限制的 x 轴和 y 轴

  12. 12

    如何在R中具有多个轴的散点图

  13. 13

    具有直方图轴的散点图中的颜色密度

  14. 14

    Excel Mac-创建带有两列的X轴和Y轴值的图形

  15. 15

    在具有动态x轴类别的Highcharts工具提示中添加其他数据

  16. 16

    将散点图和箱形图的X轴对齐

  17. 17

    将散点图和箱形图的X轴对齐

  18. 18

    如何在x轴上具有两个类别的R中手动创建箱形图

  19. 19

    ggplot2 dotplot如何创建空的x轴类别

  20. 20

    ggvis:具有整数刻度的x轴

  21. 21

    具有共享x轴的Seaborn图

  22. 22

    避免在 matplotlib 中按 X 轴排序并绘制具有多个 y 轴的公共 X 轴

  23. 23

    更改X轴折线图抖动

  24. 24

    同时具有第二个x轴和第二个y轴的晶格图?

  25. 25

    如何在具有一个 x 轴和两个 y 轴的图中将误差线缩放到右侧 y 轴的尺寸

  26. 26

    密谋:如何从x轴上删除空日期?

  27. 27

    Python Matplotlib散点图添加x轴标签

  28. 28

    分组的散点图,Excel中的分类X轴

  29. 29

    在散点图中更改x轴的xticks

热门标签

归档