plotly / plotly/plotly.py

Since upgrading plotly.py to 5.15.0 subplots with 2 columns, the yaxis2 title_text is showing on the left next to yaxis

Đang mở
#4,283 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

bug P3 regression
Ngôn ngữ chính
Python
Star
18.8k
Fork
2.8k
Merge trung bình
16 giờ 26 phút
Pull request đã merge (30 ngày)
21

Mô tả

After upgrading plotly.py to 5.15.0
subplots with two columns created by cufflinks subplot command have all the yaxis labels on the left, not next to each subplot.
The head of the file created has "https://cdn.plot.ly/plotly-2.24.1.min.js" if I edit this file to use js "https://cdn.plot.ly/plotly-2.11.1.min.js" the plots are OK as expected.

I am not sure if this is a plotly js issue or a cufflinks issue
When creating similar subplots without cufflinks they look OK.

Code to make failed chart

from plotly.subplots import make_subplots
import plotly.graph_objects as go
import plotly.io as pio
pio.templates.default = 'plotly_white'
import setuptools
import pandas as pd
import cufflinks as cf
cf.set_config_file(offline=True)
cf.set_config_file(theme='white')

data = {
"yaxis1": [420, 380, 390],
"yaxis2": [50, 40, 45],
"yaxis3": [30, 50, 70],
"yaxis4": [222, 333, 444]
}

#load data into a DataFrame object:
df = pd.DataFrame(data)
print(df)

fig=cf.subplots([df.loc[:,'yaxis1'].figure(kind='scatter',name='YAXIS1'),
df.loc[:,'yaxis2'].figure(kind='scatter',name='YAXIS2'),
df.loc[:,'yaxis3'].figure(kind='scatter',name='YAXIS3'),
df.loc[:,'yaxis4'].figure(kind='scatter',name='YAXIS4')],
shape=(2,2),shared_xaxes=True,shared_yaxes=True,subplot_titles=("Plot 1", "Plot 2", "Plot 3", "Plot 4"))
fig['layout']['hoverlabel'] = dict(namelength = -1)
fig['layout']['hovermode']='x'
fig['layout']['height']=600
fig['layout']['width']=800
fig['layout']['modebar']=({'add': ['v1hovermode', 'toggleSpikeLines']})
fig['layout']['title']="Side By Side Subplots"
fig['layout']['xaxis'].update({'showticklabels': True})
fig['layout']['xaxis2'].update({'showticklabels': True})
fig['layout']['xaxis3'].update({'showticklabels': True})
fig['layout']['xaxis4'].update({'showticklabels': True})
fig['layout']['yaxis'].update({'title_text':'yaxis1'})
fig['layout']['yaxis2'].update({'title_text':'yaxis2'})
fig['layout']['yaxis3'].update({'title_text':'yaxis3'})
fig['layout']['yaxis4'].update({'title_text':'yaxis4'})
pio.write_html(fig, file='test_subplot_cf.html', auto_open=True, include_plotlyjs='cdn')

FAILS:

<script type="text/javascript">window.PlotlyConfig = {MathJaxConfig: 'local'};</script> <script charset="utf-8" src="https://cdn.plot.ly/plotly-2.24.1.min.js"></script>

Change the JS file and it comes good, no other changes needed.
WORKS:

<script type="text/javascript">window.PlotlyConfig = {MathJaxConfig: 'local'};</script> <script charset="utf-8" src="https://cdn.plot.ly/plotly-2.11.1.min.js"></script>

Code without cufflinks that works OK

from plotly.subplots import make_subplots
import plotly.graph_objects as go
import plotly.io as pio

fig = make_subplots(rows=2, cols=2,subplot_titles=("Plot 1", "Plot 2", "Plot 3", "Plot 4"))

fig.add_trace(
go.Scatter(x=[1, 2, 3], y=[4, 5, 6]),
row=1, col=1
)
fig.add_trace(
go.Scatter(x=[11, 12, 13], y=[4, 5, 6]),
row=2, col=1
)

fig.add_trace(
go.Scatter(x=[20, 30, 40], y=[50, 60, 70]),
row=1, col=2
)
fig.add_trace(
go.Scatter(x=[21, 31, 41], y=[50, 60, 70]),
row=2, col=2
)

fig.update_layout(modebar_add=["v1hovermode", "toggleSpikeLines"],height=600, width=800, title_text="Side By Side Subplots",yaxis=dict(title_text='yaxis1'),yaxis2=dict(title_text='yaxis2'),yaxis3=dict(title_text='yaxis3'),yaxis4=dict(title_text='yaxis4'))
pio.write_html(fig, file='test_subplot.html', auto_open=True, include_plotlyjs='cdn')

H:\aaPrograms>pip list
Package Version


affinity 0.1.0
aiosignal 1.3.1
altgraph 0.17.3
ansiwrap 0.8.4
anyio 3.6.2
appdirs 1.4.4
argon2-cffi 21.3.0
argon2-cffi-bindings 21.2.0
asttokens 2.2.1
async-generator 1.10
attrs 22.1.0
Babel 2.11.0
backcall 0.2.0
beautifulsoup4 4.11.1
black 22.10.0
bleach 5.0.1
Brotli 1.0.9
bz2file 0.98
cachelib 0.9.0
certifi 2022.9.24
cffi 1.15.1
chardet 5.0.0
charset-normalizer 2.1.1
chart-studio 1.1.0
click 8.1.3
colorama 0.4.6
colorlover 0.3.0
comm 0.1.3
contourpy 1.0.6
cryptography 38.0.3
cufflinks 0.17.3
cycler 0.11.0
Cython 0.29.33
dash 2.7.0
dash-core-components 2.0.0
dash-html-components 2.0.0
dash-table 5.0.0
debugpy 1.6.7
decorator 5.1.1
defusedxml 0.7.1
descartes 1.1.0
distlib 0.3.6
entrypoints 0.4
executing 1.2.0
fastjsonschema 2.16.2
file-read-backwards 2.0.0
filelock 3.9.0
filetype 1.2.0
Flask 2.2.2
Flask-Compress 1.13
Flask-Session 0.4.0
fonttools 4.38.0
frozenlist 1.3.3
future 0.18.2
grpcio 1.51.1
html2image 2.0.3
idna 3.4
imgkit 1.2.3
importlib 1.0.4
importlib-metadata 5.0.0
importlib-resources 5.10.0
inflate64 0.3.1
ipykernel 6.22.0
ipython 8.13.1
ipython-genutils 0.2.0
ipywidgets 8.0.6
itsdangerous 2.1.2
jedi 0.18.2
Jinja2 3.1.2
joblib 1.2.0
json5 0.9.10
JsonForm 0.0.2
jsonschema 4.17.0
JsonSir 0.0.2
jupyter 1.0.0
jupyter_client 8.2.0
jupyter-console 6.4.4
jupyter_core 5.3.0
jupyter-server 1.23.2
jupyterlab 3.5.0
jupyterlab-pygments 0.2.2
jupyterlab_server 2.16.3
jupyterlab-widgets 3.0.7
kaleido 0.2.1
kiwisolver 1.4.4
lxml 4.9.1
MarkupSafe 2.1.1
matplotlib 3.6.2
matplotlib-inline 0.1.6
microsoftgraph-python 1.1.4
mistune 2.0.4
mizani 0.8.1
msal 1.20.0
msgpack 1.0.4
multivolumefile 0.2.3
mypy-extensions 0.4.3
nbclassic 0.4.8
nbclient 0.7.0
nbconvert 7.2.5
nbformat 5.7.0
nest-asyncio 1.5.6
notebook 6.5.2
notebook_shim 0.2.2
numpy 1.24.3
O365 2.0.21
oauthlib 3.2.2
Office365-REST-Python-Client 2.3.15
OnedriveCMD 0.1.8.1
onedrivesdk 2.0.1
packaging 23.1
palettable 3.3.0
pandas 2.0.1
pandas-read-xml 0.3.1
pandocfilters 1.5.0
papermill 2.4.0
parquet 1.3.1
parso 0.8.3
pathspec 0.10.2
patsy 0.5.3
pefile 2022.5.30
pickleshare 0.7.5
Pillow 9.3.0
pip 23.2
platformdirs 3.5.0
plotly 5.15.0
plotnine 0.10.1
ply 3.11
progress 1.6
prometheus-client 0.15.0
prompt-toolkit 3.0.38
protobuf 4.21.12
psutil 5.9.5
pure-eval 0.2.2
py7zr 0.20.2
pyarrow 10.0.0
pybcj 1.0.1
pycparser 2.21
pycryptodomex 3.15.0
Pygments 2.15.1
pyinstaller 5.6.2
pyinstaller-hooks-contrib 2022.13
PyJWT 2.6.0
pynsist 2.8
pyparsing 3.0.9
PyPDF2 2.11.1
pyppmd 1.0.0
PyQt5 5.15.7
PyQt5-Qt5 5.15.2
PyQt5-sip 12.11.0
pyrsistent 0.19.2
python-dateutil 2.8.2
python-docx 0.8.11
Python-EasyConfig 0.1.7
python-magic 0.4.27
python-snappy 0.6.1
pytz 2023.3
pytz-deprecation-shim 0.1.0.post0
pywin32 306
pywin32-ctypes 0.2.0
pywinpty 2.0.9
PyYAML 6.0
pyzmq 25.0.2
pyzstd 0.15.3
qtconsole 5.4.0
QtPy 2.3.0
ray 2.2.0
regex 2022.10.31
requests 2.28.1
requests_download 0.1.2
requests-oauthlib 1.3.1
Resource 0.2.1
retrying 1.3.3
scipy 1.9.3
seaborn 0.12.1
Send2Trash 1.8.0
setuptools 67.7.2
sharepoint 0.4.2
six 1.16.0
sklearn 0.0.post5
sniffio 1.3.0
soupsieve 2.3.2.post1
stack-data 0.6.2
statsmodels 0.13.5
stringcase 1.2.0
sv-ttk 2.4
tabulate 0.9.0
tenacity 8.2.2
terminado 0.17.0
testpath 0.6.0
texttable 1.6.4
textwrap3 0.9.2
threadsafe-tkinter 1.0.2
thriftpy 0.3.9
thriftpy2 0.4.15
tinycss2 1.2.1
tkfilebrowser 2.3.2
toml 0.10.2
tomli 2.0.1
tornado 6.3.1
tqdm 4.64.1
traitlets 5.9.0
ttkthemes 3.2.2
typed-ast 1.5.4
typing_extensions 4.4.0
tzdata 2023.3
tzlocal 4.2
urllib3 1.26.12
virtualenv 20.17.1
wcwidth 0.2.6
webencodings 0.5.1
websocket-client 1.4.2
Werkzeug 2.2.2
wheel 0.38.4
widgetsnbextension 4.0.7
wkhtmltopdf 0.2
xmltodict 0.13.0
yarg 0.1.9
zipfile36 0.1.3
zipp 3.10.0

image

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu với cufflinks subplot reproducer được cung cấp và so sánh HTML được tạo ra khi sử dụng Plotly.js 2.24.1 với khi sử dụng 2.11.1, sau đó so sánh với ví dụ make_subplots đang hoạt động. Xác định xem hồi quy nằm trong layout do cufflinks tạo ra hay trong quá trình kết xuất JavaScript, đồng thời xác minh rằng các tiêu đề của yaxis2 đến yaxis4 xuất hiện bên cạnh các subplot tương ứng với các phiên bản hiện tại.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
javascript, pandas, python
Lĩnh vực
data-visualization
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.