Layout does not update when the chart gets a different set of data - revision and layout.datarevision don't work
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 38/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- javascript, react
- Lĩnh vực
- data-visualization, frontend
Hướng nghiên cứu
Bắt đầu bằng việc tái hiện trong src/BarChart.js từ CodeSandbox được liên kết và kiểm tra cách component Plot nhận data, layout, revision và layout.datarevision trước và sau khi nhấp. Tái hiện việc hoán đổi trục và so sánh biểu đồ được render với các props được ghi log; hoàn thành khi việc thay thế data cập nhật cả hai loại trục và biểu đồ không còn bị trống.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
I am trying to update a whole bar chart using Plotly React.
First I have a bar chart with bars on vertical, then after I click wherever on the chart I would like to rotate the chart 90 degrees and have the bars on horizontal with different data. So X axis becames Y and vice-versa.
I have tried using the revision prop of the <Plot /> component and the layout.dataverision property but it doesn't work.
When I click on the chart, it just empties.
I have
const onUpdate = (event) => {
console.log('update', event);
};
which logs the appropriate data and layout in console before and after the click.
Basically the data updates but the layout does not and the issue comes from the x and y axis trying to display the same type data and not assessing what is the new data.
// here xaxis thinks it has to display strings
// and yaxis thinks it has to display numbers
// which is correct only for the first set of data
xaxis: {autorange: true, range: Array(2), type: "category"},
yaxis: {autorange: true, range: Array(2), type: "linear"}
// the second set of data reverses the x and y axes, so the new properties should be:
xaxis: {autorange: true, range: Array(2), type: "linear"},
yaxis: {autorange: true, range: Array(2), type: "category"}
How can I make Plotly asses the new data and update the layout accordingly ?
Thank you.
https://codesandbox.io/s/elegant-williams-jofx90?file=/src/BarChart.js
import { useEffect, useState } from "react";
import Plot from "react-plotly.js";
export default function BarChart() {
const [chart, setChart] = useState({
data: [],
layout: {
title: "Some BarChart",
showlegend: true,
legend: {
x: 0,
y: -0.4,
orientation: "h"
},
autosize: true,
barmode: "stack",
datarevision: 0
},
config: { responive: true },
revision: 0
});
useEffect(() => {
const farm1 = {
x: ["Ducks", "Cows", "Pigs", "Chickens"],
y: [10, 12, 14, 16],
name: "Farm 1",
type: "bar",
marker: { color: "#000" },
hovertemplate: "%{x} - %{y:.0f} <extra></extra>"
};
const farm2 = {
x: ["Ducks", "Cows", "Pigs", "Chickens"],
y: [8, 10, 12, 14],
name: "Farm 2",
type: "bar",
marker: { color: "#FE7100" },
hovertemplate: "%{x} - %{y:.0f} <extra></extra>"
};
setChart((prevState) => ({
data: [farm1, farm2],
layout: { ...prevState.layout }
}));
}, [setChart]);
const onUpdate = (event) => {
console.log("update", event);
};
const onClick = (event) => {
const farm1 = {
x: [10, 12, 14, 16],
y: ["Ducks", "Cows", "Pigs", "Chickens"],
name: "Farm 1",
type: "bar",
marker: { color: "#000" },
hovertemplate: "%{x} - %{y:.0f} <extra></extra>",
orientation: "h"
};
const farm2 = {
x: [8, 10, 12, 14],
y: ["Ducks", "Cows", "Pigs", "Chickens"],
name: "Farm 2",
type: "bar",
marker: { color: "#FE7100" },
hovertemplate: "%{x} - %{y:.0f} <extra></extra>",
orientation: "h"
};
setChart((prevState) => ({
data: [farm1, farm2],
layout: {
...prevState.layout,
datarevision: prevState.layout.datarevision + 1
},
revision: prevState.revision + 1
}));
console.log(event.points[0].x.replaceAll("<br>", " ").trim());
};
return (
<Plot
data={chart.data}
layout={chart.layout}
config={chart.config}
revision={chart.revision}
style={{ width: "100%", height: "100%" }}
useResizeHandler
onClick={onClick}
onUpdate={onUpdate}
/>
);
}
- Ngôn ngữ chính
- JavaScript
- Star
- 1.1k
- Fork
- 138
- Merge trung bình
- 3 ngày 2 giờ
- Pull request đã merge (30 ngày)
- 4
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của plotly/react-plotly.js
-
P3 plotly-internal size: 1 task
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
plotly/react-plotly.js#386 ·
-
enhancement P3 size: 1
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 65/100
plotly/react-plotly.js#380 · 7 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
plotly/react-plotly.js#358 · 1 bình luận ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
plotly/react-plotly.js#354 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 30/100
plotly/react-plotly.js#353 · 1 bình luận ·
Tất cả issue của plotly/react-plotly.js
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
avniproject/avni-client#2135 ·
-
automated broken-link
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
-
agent/security hive/hosted-available-lke648397-260827-5n31 security
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
babalae/bettergi-scripts-list#3674 ·
-
A-Release-Notes C-Editing D-Modest S-Ready-For-Implementation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
bevyengine/bevy-website#2595 ·