Màu nền cho nhiều tấm Highchart, trong ứng dụng Vue


8

Tôi đang sử dụng Highcharts trong ứng dụng Vue bằng cách sử dụng highcharts-vue

Tôi đang thiết lập mẫu của tôi như vậy

<highcharts class="vessChart" ref="chart" style="width:100%"  :callback="chartcallback" :options="options"    ></highcharts>  

và sau đó tôi đặt các tùy chọn của biểu đồ trong Vue

            yAxis:[],
        series:[],     
        background:[],
        options: {              
          chart: {
            borderWidth: 1,
            marginLeft: 40,
            marginRight: 2,
            type:'line',
            zoomType: 'x',
            title: {
                text: ''
            },
            panning:true
            /*backgroundColor:'lightgrey'*/
          },
          title: {
            text: ''
          },
          pane:{
            background:[]
          },
          time:{
            useUTC:true
          },  
          credits:{
            enabled:false
          },
          tooltip: {
            shared: true
          },
          title:{
            text:null
          },
          rangeSelector: {
            inputEnabled: false
          },
          xAxis:{
            type:'datetime',
            title:
            {
              align:'high'
            }, 
            labels: {
              padding: 50,
              format: '{value:%e %b %Y}',
              style: {
                fontSize: '10px'
              }
            },
            crosshair: {
                enabled: true,
                width: 2,
                color: '#000'
            },
          },
          yAxis: [],   
          plotOptions: {
            series: {
              animation: false
            }
          },
          ,series: []
        }

và sau đó, khi tôi có dữ liệu để thêm, tôi đẩy dữ liệu sang mảng yAxis, chuỗi và nền tương ứng

                this.data.titles.forEach(title => {
              this.yAxis.push(
                  {
                    title: {
                      text: title.title,
                      margin:20,
                      fontSize:"15px"
                    },
                    labels: {
                      enabled:true,
                      align: 'left',
                      padding:15
                    },
                    alignTicks:'left', 
                    textAlign:'left',
                    align:'middle',
                    height: chartHeight+'%',
                    top:topStep+'%',
                    opposite:false, 
                    offset:0
                  }
              );
              this.background.push({backgroundColor: "red"});
              topStep = topStep + chartHeight + 5; 
              this.series.push({
                    yAxis:counter,
                    name:title.title,
                    data:[]
              });
              counter++;
            });//foreach 
            this.options.yAxis = this.yAxis;
            this.options.series = this.series;
            this.options.pane = this.background;

Tôi đã cố gắng nhập highcharts-more bằng cách làm

    import highchartsmore from './highcharts-more.js'     

nhưng nó không hoạt động, trang trở lại màu trắng. Tôi cũng đã cố gắng nhập nó bằng cách truy cập index.html của Vue và thêm<script src="https://code.highcharts.com/highcharts-more.js"></script>

Không có lỗi trong trang, nhưng các tấm vẫn không có màu.

* Nếu điều này là không thể, ít nhất tôi có thể thêm một đường giữa các tấm bằng cách nào đó không?

Cảm ơn

BIÊN TẬP

Các khu vực màu đỏ là "panes". Cảm ơnnhập mô tả hình ảnh ở đây


Thật khó để gỡ lỗi nó như thế này. Nếu bạn có thể cung cấp một câu đố với mã của bạn sẽ hữu ích.
phát lại vào

Vui lòng sao chép mã của bạn trên mạng mà tôi có thể làm việc. Đây là một mẫu mà bạn có thể sử dụng: Codeandbox.io/s/nw750l07nj
Sebastian Wędzel

@ SebastianWędzel Kiểm tra điều này. Nếu bạn xóa mã liên quan đến khung và nhấn "Cập nhật biểu đồ", sẽ mang lại dữ liệu mới. Codeandbox.io/s/vue-template-40b4z
codebot

Tôi sợ rằng bản demo này không hoạt động tốt. Bạn có thể sửa nó không?
Sebastian Wędzel

@ SebastianWędzel Xin chào lần nữa. Vui lòng kiểm tra https://codesandbox.io/s/vue-template-m6fse ngay bây giờ. Khi bạn nhấn nút Cập nhật biểu đồ, nó sẽ tạo 2 bảng khác nhau trong cùng một biểu đồ. Bây giờ, tôi muốn 2 tấm đó có màu nền bằng cách nào đó. Cảm ơn
codebot

Câu trả lời:


3

Bạn có thể sử dụng thuộc tính chart.plotBackgroundColor để đạt được yêu cầu của bạn.

Bản trình diễn: https://codesandbox.io/s/vue-template-pt9jp

Và vì biểu đồ của bạn được hiển thị linh hoạt, tôi khuyến khích tắt hình ảnh động:

chart: {
  type: "spline",
  title: "Hassaan",
  animation: false
},

API: https://api.highcharts.com/highcharts/chart.plotBackgroundColor


Điều này gần, nhưng không phải những gì tôi muốn. Tôi muốn các tấm màu trắng và nền vẫn là màu đen.
codebot

Tôi không hiểu - bạn có hình ảnh mô tả biểu đồ sẽ trông như thế nào không?
Sebastian Wędzel

Kiểm tra câu hỏi ban đầu của tôi, tôi đã tải lên một hình ảnh, các khu vực màu đỏ là các tấm. Những tấm đó phải có màu khác nhau.
codebot

Vì vậy, bạn muốn đạt được một cái gì đó như thế này? Codeandbox.io/s/vue-template-umuhv
Sebastian Wędzel

Có, nhưng bạn không thể thấy nơi một ngăn bắt đầu và các kết thúc khác. Vì vậy, không gian giữa chúng, cũng nên có màu đen, để bạn có thể dễ dàng phân biệt chúng. Khoảng cách giữa 7.5 và 0
codebot

2

Đối với những gì tôi thấy bạn sẽ cần tạo kiểu bằng trang css Docs , có một ví dụ trực tiếp ở đây

@import 'https://code.highcharts.com/css/highcharts.css';

.highcharts-plot-background {
	fill: #efffff;
}
.highcharts-plot-border {
	stroke-width: 2px;
	stroke: #7cb5ec;
}

Chỉnh sửa: Tôi tìm thấy một workaorund trên này chủ đề, bạn có thể thay đổi màu nền cho một cửa sổ phạm vi cụ thể sử dụng plotBands:

e.g. yAxis : {[ ... plotBands : {color : '#f7d724', from : -50, to : 50}, ... ]}

Trong trường hợp của bạn, bạn nên đặt các giá trị cho cái đầu tiên và cuối cùng.


Điều này gần với những gì tôi muốn, nhưng tôi muốn khung có màu khác và tôi không thể thấy bất kỳ quy tắc css nào chỉ cho các bảng của biểu đồ. Cảm ơn
codebot

Tôi không chắc chắn những gì bạn có ý nghĩa bởi khung, nhưng tôi tìm thấy này tài sản trên API Reference
Bernardo Marques

Kiểm tra bức ảnh trong câu hỏi ban đầu của tôi, các khu vực màu đỏ là các tấm. Cảm ơn
codebot

Tôi đã thử pane:{ background:{ backgroundColor:"#000000" } }bên trong các tùy chọn biểu đồ json và bên trong "biểu đồ" của các tùy chọn tương tự và nó không làm gì cả ....
codebot

0

Một cách hackish để làm điều đó sẽ là tiêm trực tiếp vào svg.

document.getElementsByClassName("highcharts-root")[0].innerHTML += '<rect width="100%" x="0" y="40" height="150" fill="#ff0000"></rect>';
document.getElementsByClassName("highcharts-root")[0].innerHTML += '<rect width="100%" x="0" y="200" height="150" fill="#ff0000"></rect>';
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.