r - كيفية - فليكسداشبوارد/بلوتلي التفاعل النتائج في الغريب سلوك شريط التمرير




كيفية اظهار شريط القوائم (2)

لدي مشكلة غريبة ومحبطة للغاية. عندما أقوم ببناء الرسوم البيانية مؤامرة داخل القصص المصورة (من حزمة فليكسداشبوارد)، وأحصل على شريط التمرير مزعج جدا وغير ضرورية تماما في أسطوري. عندما يحاول شخص ما للنقر على واحدة من النقاط أو إيقاف تشغيله، شريط التمرير نشل ومن المستحيل عمليا للنقر على الشيء. يظهر شريط التمرير هذا فقط عندما لا تكون علامة التبويب ذات الرسم البياني بلوتلي مرئية على الفور أثناء تحميل الصفحة - أي إذا تم تحميل الصفحة مع علامة تبويب أخرى محددة.

يمكنني جعل نفس الرسم البياني خارج لوحة القصة، مع أي مشاكل إما في رستوديو، أو حفظه ك هتملويدجيت وتحميله في كروم. ولكن عند تحميل لوحة قصتي، سواء في رستوديو أو في كروم، أحصل على شريط التمرير المزعج هذا. يوجد شريط التمرير إذا كانت أسطورة عمودية أو أفقية.

غبلوتلي الكائنات ليس لديهم هذه المشكلة.

إليك مثال على شريط التمرير غير الضروري. الرسم البياني غبلوتلي على ما يرام، و بلوتلي واحد لديه شريط التمرير.

---
title: "Untitled"
output: 
  flexdashboard::flex_dashboard:
    storyboard: true
---

```{r setup, include=FALSE}
library(flexdashboard)
```

### ggplot

```{r}

library(plotly)

carggplot <- ggplot(mtcars, aes(hp, mpg, fill = as.factor(carb))) +
    geom_point() +
    theme_bw()

ggplotly(carggplot)
```


### plotly

```{r}
carsplot <- plot_ly(
    data = mtcars,
    x = ~hp,
    y = ~mpg,
    color = ~as.factor(carb),
    type = "scatter",
    mode = "markers"
    )

carsplot
```

لم أتمكن من العثور على أي وثائق حول هذه المسألة، على الرغم من أنني وجدت مشكلة مماثلة نشرها شخص باستخدام واجهة بيثون ل بلوتلي.

أنا أبحث عن وسيلة إما لإيقاف شريط التمرير تماما (مع الحفاظ على أسطورة)، أو بعض التفسير للسلوك شيطرة شريط التمرير.

فليكسداشبوارد هو 0.5، بلوتلي هو 4.7.1، R هو 64 بت 3.4.1، ويندوز 7.


السؤال القديم ولكن إذا كان لدى الآخرين نفس المشكلة، كنت أرغب في الحصول على حل هناك ...

كان لي نفس المشكلة وحللت باستخدام هذا النهج:

ggplotly(carggplot, height = 500)

كان لي شريط التمرير مصغرة في ggplotly() وضبط الارتفاع كما هو موضح أعلاه أثناء استدعاء ggplotly() ، سمح لي أن التكيف مع الارتفاع الصحيح اللازمة لجعل كل شيء العمل.


هناك الكثير جدا من أجزاء متحركة مستمرة للرد على سؤالك. أنا لن تغطي كل التفاصيل ولكن لم تلمس لهم إلا لفترة وجيزة.

خلفية

  1. الرسم البياني plotly.js يتصرف كما هو مصمم عندما يصبح طول أسطورة أطول، فإنه تلقائيا إدراج شريط التمرير.

  2. هذا لا يحدث مع الرسم البياني ggplotly لأن كل التصميم المرئي يأتي من كائن ggplot .

  3. flexdashboard هو الجاني في هذه الحالة بسبب كيف هو حيوي المناسب المساحة المتوفرة وإعلام plotly.js على كيفية تقديم. ومن الجدير بالذكر أن هذا يبدو سفغ في مصدر هتمل.

  4. الحل هو بعد ذلك لمعالجة دوم من أجل إخفاء / إزالة / تغيير العنصر إشكالية.

الحل المحتمل

وبالتالي فإن الحل الذي أقدمه أدناه هو قليلا من الإختراق. قد يكون حل أكثر دواما لتقديم قضية مع الناس الطيبين في رستوديو لمعرفة ما إذا كان يمكن إجراء أي تغيير على الحزمة، التي تعالج مشكلتك.

إذا قمت بإضافة runtime: shiny لرأس يمل الخاص بك، يمكنك ثم الاستفادة من حزمة shinyjs ممتازة من قبل دين أتالي . في حين أنني لست خبيرا في هذا المجال، لقد أضفت بضعة أسطر إلى التوعية الخاصة بك إزالة العناصر <rect> من سفغ من class=scrollbar . من المهم أن نلاحظ أنك قد تحتاج إلى تغيير جافا سكريبت أقدم أن تكون أكثر تحديدا وعدم إزالة العناصر التي قد ترغب في الاحتفاظ بها.

تحديث لمخاطر الألغام

هنا هو رمز Rmd مع التعليقات حيث قمت بإجراء تغييرات.

---
title: "Untitled"
output: 
  flexdashboard::flex_dashboard:
    storyboard: true
  runtime: shiny
---

```{r setup, include=FALSE}
library(shinyjs)        # add package, note runtime option above in YAML
useShinyjs(rmd = TRUE)  # function needs to initialise js

library(flexdashboard)
library(plotly)
```

### ggplot

```{r}

library(plotly)

carggplot <- ggplot(mtcars, aes(hp, mpg, fill = as.factor(carb))) +
    geom_point() +
    theme_bw()

ggplotly(carggplot)
```


### plotly

```{r}
carsplot <- plot_ly(
    data = mtcars,
    x = ~hp,
    y = ~mpg,
    color = ~as.factor(carb),
    type = "scatter",
    mode = "markers"
    )

carsplot

runjs("$svg.selectAll('rect[class=scrollbar]').remove();") # run plain js to remove elements
```

نب كما نشرت هذا، كان لي نتائج لا يمكن الاعتماد عليها وسوف حفر في أبعد من ذلك.