首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更改您的Dash应用程序的颜色?

如何更改您的Dash应用程序的颜色?
EN

Stack Overflow用户
提问于 2021-03-22 08:30:13
回答 1查看 10.8K关注 0票数 2

我试图创建一个黑色的仪表板,所以我抓起了一个css样式表,它应该会使我的仪表板变黑。通过阅读文档,我了解到,如果您在应用程序目录的根目录中创建一个名为资产的文件夹,并将您的CSS或JavaScript文件包含在该文件夹中。Dash将自动提供包含在此文件夹中的所有文件。所以我有以下的结构:

代码语言:javascript
运行
复制
dashapp
    |--assets
        |-- style.css
    |--data
        |-- stockdata2.csv
    |-- app.py

运行我的代码时,我得到以下输出:

我希望我想要的输出如下所示,所以使用黑色布局颜色:

这是我的密码:

代码语言:javascript
运行
复制
import dash
import dash_core_components as dcc
import dash_html_components as html

import plotly.express as px
import pandas as pd
import os

# Load data
df = pd.read_csv('c:\data\EK\Desktop\Python Microsoft Visual Studio\dashapp\data\stockdata2.csv', index_col=0, parse_dates=True)
df.index = pd.to_datetime(df['Date'])

#Initialize the application
app = dash.Dash(__name__)

#define de app
app.layout=html.Div(
    children=[
        html.Div(className='row',
            children=[
                html.Div(className='four columns div-user-controls'),
                html.Div(className='eight columns div-for-charts bg-grey'),
                html.H2('Dash - STOCK PRICES'),
                html.P('''Visualising time series with Plotly - Dash'''),
                html.P('''Pick one or more stocks from the dropdown below.'''),
                dcc.Graph(id='timeseries',
                    config={'displayModeBar': False},
                    animate=True,
                    figure=px.line(df,
                                    x='Date',
                                    y='value',
                                    color='stock',
                                    template='plotly_dark').update_layout(
                                            {'plot_bgcolor': 'rgba(0, 0, 0, 0)',
                                                'paper_bgcolor': 'rgba(0, 0, 0, 0)'})
                                    )

            ]
        )
    ]
)

#Run the app
if __name__ == '__main__':
    app.run_server(debug=True)

style.css看起来如下:

代码语言:javascript
运行
复制
/* Table of contents ––––––––––––––––––––––––––––––––––––––––––––––––––
Taken from https://codepen.io/chriddyp/pen/bWLwgP.css
- Grid
- Base Styles
 - Typography
 - Links
 - Buttons
 - Forms
 - Lists
 - Code
 - Tables
 - Spacing
 - Utilities
 - Clearing
 - Media Queries
 - Custom App CSS */


/* Grid –––––––––––––––––––––––––––––––––––––––––––––––––– */
.container {
  position: relative;
  width: 100%;
  max-width: 960px;
  margin: 0 auto;
  padding: 0 20px;
  box-sizing: border-box;
}
.column, .columns {
  width: 100%;
  float: left;
  box-sizing: border-box;
}
/* For devices larger than 400px */
@media (min-width: 400px) {
  .container {
      width: 85%;
      padding: 0;
 }
}
/* For devices larger than 550px */
@media (min-width: 550px) {
  .container {
      width: 80%;
 }
  .column, .columns {
      margin-left: 4%;
 }
  .column:first-child, .columns:first-child {
      margin-left: 0;
 }
  .one.column, .one.columns {
      width: 4.66666666667%;
 }
  .two.columns {
      width: 13.3333333333%;
 }
  .three.columns {
      width: 22%;
 }
  .four.columns {
      width: 30.6666666667%;
 }
  .five.columns {
      width: 39.3333333333%;
 }
  .six.columns {
      width: 48%;
 }
  .seven.columns {
      width: 56.6666666667%;
 }
  .eight.columns {
      width: 65.3333333333%;
 }
  .nine.columns {
      width: 74.0%;
 }
  .ten.columns {
      width: 82.6666666667%;
 }
  .eleven.columns {
      width: 91.3333333333%;
 }
  .twelve.columns {
      width: 100%;
      margin-left: 0;
 }
  .one-third.column {
      width: 30.6666666667%;
 }
  .two-thirds.column {
      width: 65.3333333333%;
 }
  .one-half.column {
      width: 48%;
 }
 /* Offsets */
  .offset-by-one.column, .offset-by-one.columns {
      margin-left: 8.66666666667%;
 }
  .offset-by-two.column, .offset-by-two.columns {
      margin-left: 17.3333333333%;
 }
  .offset-by-three.column, .offset-by-three.columns {
      margin-left: 26%;
 }
  .offset-by-four.column, .offset-by-four.columns {
      margin-left: 34.6666666667%;
 }
  .offset-by-five.column, .offset-by-five.columns {
      margin-left: 43.3333333333%;
 }
  .offset-by-six.column, .offset-by-six.columns {
      margin-left: 52%;
 }
  .offset-by-seven.column, .offset-by-seven.columns {
      margin-left: 60.6666666667%;
 }
  .offset-by-eight.column, .offset-by-eight.columns {
      margin-left: 69.3333333333%;
 }
  .offset-by-nine.column, .offset-by-nine.columns {
      margin-left: 78.0%;
 }
  .offset-by-ten.column, .offset-by-ten.columns {
      margin-left: 86.6666666667%;
 }
  .offset-by-eleven.column, .offset-by-eleven.columns {
      margin-left: 95.3333333333%;
 }
  .offset-by-one-third.column, .offset-by-one-third.columns {
      margin-left: 34.6666666667%;
 }
  .offset-by-two-thirds.column, .offset-by-two-thirds.columns {
      margin-left: 69.3333333333%;
 }
  .offset-by-one-half.column, .offset-by-one-half.columns {
      margin-left: 52%;
 }
}
/* Base Styles –––––––––––––––––––––––––––––––––––––––––––––––––– */
/* NOTE html is set to 62.5% so that all the REM measurements throughout Skeleton are based on 10px sizing. So basically 1.5rem = 15px :) */
html {
  font-size: 62.5%;
}
body {
  font-size: 1.5em;
 /* currently ems cause chrome bug misinterpreting rems on body element */
  line-height: 1.6;
  font-weight: 400;
  color: rgb(50, 50, 50);
}

/* Typography –––––––––––––––––––––––––––––––––––––––––––––––––– */
h1, h2, h3, h4, h5, h6 {
  margin-top: 0;
  margin-bottom: 0;
  font-weight: 300;
}
h1 {
  font-size: 4.5rem;
  line-height: 1.2;
  letter-spacing: -.1rem;
  margin-bottom: 2rem;
}
h2 {
  font-size: 3.6rem;
  line-height: 1.25;
  letter-spacing: -.1rem;
  margin-bottom: 1.8rem;
  margin-top: 1.8rem;
}
h3 {
  font-size: 3.0rem;
  line-height: 1.3;
  letter-spacing: -.1rem;
  margin-bottom: 1.5rem;
  margin-top: 1.5rem;
}
h4 {
  font-size: 2.6rem;
  line-height: 1.35;
  letter-spacing: -.08rem;
  margin-bottom: 1.2rem;
  margin-top: 1.2rem;
}
h5 {
  font-size: 2.2rem;
  line-height: 1.5;
  letter-spacing: -.05rem;
  margin-bottom: 0.6rem;
  margin-top: 0.6rem;
}
h6 {
  font-size: 2.0rem;
  line-height: 1.6;
  letter-spacing: 0;
  margin-bottom: 0.75rem;
  margin-top: 0.75rem;
}
p {
  margin-top: 0;
}
/* Blockquotes –––––––––––––––––––––––––––––––––––––––––––––––––– */
blockquote {
  border-left: 4px lightgrey solid;
  padding-left: 1rem;
  margin-top: 2rem;
  margin-bottom: 2rem;
  margin-left: 0rem;
}
/* Links –––––––––––––––––––––––––––––––––––––––––––––––––– */
a {
  color: #1EAEDB;
  text-decoration: underline;
  cursor: pointer;
}
a:hover {
  color: #0FA0CE;
}
/* Buttons –––––––––––––––––––––––––––––––––––––––––––––––––– */
.rc-slider-track{
  background-color: #007eff
}

.rc-slider-rail{
  background-color: #505050
}


.main-svg{
  font-family: "Open Sans Semi Bold"
}

.gtitle{
  font-family: "Open Sans Semi Bold" !important
}

.g-title{
  font-family: "Open Sans Semi Bold"
}


.button, button, input[type="submit"], input[type="reset"], input[type="button"] {
  display: inline-block;
  height: 38px;
  padding: 0 30px;
  color: #555;
  text-align: center;
  font-size: 11px;
  font-weight: 600;
  line-height: 38px;
  letter-spacing: .1rem;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  background-color: transparent;
  border-radius: 4px;
  border: 1px solid #bbb;
  cursor: pointer;
  box-sizing: border-box;
}
.button:hover, button:hover, input[type="submit"]:hover, input[type="reset"]:hover, input[type="button"]:hover, .button:focus, button:focus, input[type="submit"]:focus, input[type="reset"]:focus, input[type="button"]:focus {
  color: #333;
  border-color: #888;
  outline: 0;
}
.button.button-primary, button.button-primary, input[type="submit"].button-primary, input[type="reset"].button-primary, input[type="button"].button-primary {
  color: #FFF;
  background-color: #33C3F0;
  border-color: #33C3F0;
}
.button.button-primary:hover, button.button-primary:hover, input[type="submit"].button-primary:hover, input[type="reset"].button-primary:hover, input[type="button"].button-primary:hover, .button.button-primary:focus, button.button-primary:focus, input[type="submit"].button-primary:focus, input[type="reset"].button-primary:focus, input[type="button"].button-primary:focus {
  color: #FFF;
  background-color: #1EAEDB;
  border-color: #1EAEDB;
}
/* Forms –––––––––––––––––––––––––––––––––––––––––––––––––– */
input[type="email"], input[type="number"], input[type="search"], input[type="text"], input[type="tel"], input[type="url"], input[type="password"], textarea, select {
  height: 38px;
  padding: 6px 10px;
 /* The 6px vertically centers text on FF, ignored by Webkit */
  background-color: #fff;
  border: 1px solid #D1D1D1;
  border-radius: 4px;
  box-shadow: none;
  box-sizing: border-box;
  font-family: inherit;
  font-size: inherit;
 /*https://stackoverflow.com/questions/6080413/why-doesnt-input-inherit-the-font-from-body*/
}
/* Removes awkward default styles on some inputs for iOS */
input[type="email"], input[type="number"], input[type="search"], input[type="text"], input[type="tel"], input[type="url"], input[type="password"], textarea {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}
textarea {
  min-height: 65px;
  padding-top: 6px;
  padding-bottom: 6px;
}
input[type="email"]:focus, input[type="number"]:focus, input[type="search"]:focus, input[type="text"]:focus, input[type="tel"]:focus, input[type="url"]:focus, input[type="password"]:focus, textarea:focus, select:focus {
  border: 1px solid #33C3F0;
  outline: 0;
}
label, legend {
  display: block;
  margin-bottom: 0px;
}
fieldset {
  padding: 0;
  border-width: 0;
}
input[type="checkbox"], input[type="radio"] {
  display: inline;
}
label > .label-body {
  display: inline-block;
  margin-left: .5rem;
  font-weight: normal;
}
/* Lists –––––––––––––––––––––––––––––––––––––––––––––––––– */
ul {
  list-style: circle inside;
}
ol {
  list-style: decimal inside;
}
ol, ul {
  padding-left: 0;
  margin-top: 0;
}
ul ul, ul ol, ol ol, ol ul {
  margin: 1.5rem 0 1.5rem 3rem;
  font-size: 90%;
}
li {
  margin-bottom: 1rem;
}
/* Tables –––––––––––––––––––––––––––––––––––––––––––––––––– */
table {
  border-collapse: collapse;
}
th, td {
  padding: 12px 15px;
  text-align: left;
  border-bottom: 1px solid #E1E1E1;
}
th:first-child, td:first-child {
  padding-left: 0;
}
th:last-child, td:last-child {
  padding-right: 0;
}
/* Spacing –––––––––––––––––––––––––––––––––––––––––––––––––– */
button, .button {
  margin-bottom: 0rem;
}
input, textarea, select, fieldset {
  margin-bottom: 0rem;
}
pre, dl, figure, table, form {
  margin-bottom: 0rem;
}
p, ul, ol {
  margin-bottom: 0.75rem;
}
/* Utilities –––––––––––––––––––––––––––––––––––––––––––––––––– */
.u-full-width {
  width: 100%;
  box-sizing: border-box;
}
.u-max-full-width {
  max-width: 100%;
  box-sizing: border-box;
}
.u-pull-right {
  float: right;
}
.u-pull-left {
  float: left;
}
/* Misc –––––––––––––––––––––––––––––––––––––––––––––––––– */
hr {
  margin-top: 3rem;
  margin-bottom: 3.5rem;
  border-width: 0;
  border-top: 1px solid #E1E1E1;
}
/* Clearing –––––––––––––––––––––––––––––––––––––––––––––––––– */
/* Self Clearing Goodness */
.container:after, .row:after, .u-cf {
  content: "";
  display: table;
  clear: both;
}
/* Media Queries –––––––––––––––––––––––––––––––––––––––––––––––––– */
/* Note: The best way to structure the use of media queries is to create the queries near the relevant code. For example, if you wanted to change the styles for buttons on small devices, paste the mobile query code up in the buttons section and style it there. */
/* Larger than mobile */
@media (min-width: 400px) {
}
/* Larger than phablet (also point when grid becomes active) */
@media (min-width: 550px) {
}
/* Larger than tablet */
@media (min-width: 750px) {
}
/* Larger than desktop */
@media (min-width: 1000px) {
}
/* Larger than Desktop HD */
@media (min-width: 1200px) {
}
/* Custom App CSS Below --------------------------------- */
/* Main Layout ––––––––––––––––––––––––––––––––––––––––––––––––––*/
html, body{
  height: 100%;
}

body {
  background-color: #1E1E1E;
  color: #d8d8d8;
  height: 100%;
  margin: 0;
  padding: 0;
}

.react-entry-point{
  height: 100%;
}

h1, h2, h3, h4, h5 {
  font-family: "Open Sans Semi Bold";
  letter-spacing: 2.1px;
  font-size: 21px;
  padding-left: 12px;
}
p {
  font-family: "Open Sans Light";
  font-weight: 400;
  font-size: 14px;
  padding-left: 12px;
}
a {
  text-decoration: none;
}
.bg-grey{
  background-color: #31302F;
}
.text-padding{
  padding: 5px;
}
/* Graph Layout ––––––––––––––––––––––––––––––––––––––––––––––––––*/
.div-for-charts{
  display: flex;
  flex-direction: column;
  height: 100vh;
  width: 100%;
}
#histogram {
  flex-grow: 1
}
#map-graph {
  flex-grow: 2
}
.mapboxgl-canvas, .mapboxgl-map {
  min-width: 100%;
}
/* Graph Control Objects ––––––––––––––––––––––––––––––––––––––––––––––––––*/
.div-user-controls {
  padding-left: 55px;
  padding-top: 64px;
}
.div-for-dropdown {
  padding-top: 12px;
  padding-bottom: 12px;
}
.div-for-slider {
  width: 97%;
  text-align: center;
}
.logo {
  height: 50px;
  padding-bottom: 12px;
}
.Select-control, .Select-menu-outer, .Select-multi-value-wrapper, .select-up, .is-open .Select-control {
  background-color: #1E1E1E;
  color: white;

}

#modelselector .Select-control{
  max-height: 82px;
  overflow-y: auto;
  margin: 0px 0px -3px 0px;
  border: 0.5px solid #dbdbdb44;
}

.Select-control{
  border: 0.5px solid #dbdbdb44;
}

.has-value.Select--single>.Select-control .Select-value .Select-value-label, .has-value.is-pseudo-focused.Select--single>.Select-control .Select-value .Select-value-label {
  color: white;
  background: #1E1E1E;
  background-color: #1E1E1E;
}
._dash-app-content {
  overflow-x: hidden;
  overflow-y: hidden;
  position: relative;
}
.has-value.Select--single>.Select-control .Select-value .Select-value-label, .has-value.is-pseudo-focused.Select--single>.Select-control .Select-value .Select-value-labeln {
  color: #d8d8d8;
  font-weight: 400;
  font-size: 14px;
}

.Input.DateInput_1 {
  background-color: #1e1e1e;
}

#date {
  background-color: #1e1e1e;
  font-family: "Open Sans Light";
  font-weight: 400;
  color: #dbdbdb;
  border: 0.5px solid #dbdbdb44;
}

#date-picker{
  width: 100%;
}

._dash-undo-redo {
  display: none;
}

.DateInput.DateInput_1{
  width: 100%;
}

.SingleDatePickerInput__withBorder{
  border:none;
}

.DateInput.DateInput_1 {
  background-color: #1e1e1e;
}

.SingleDatePickerInput__withBorder {
  border-radius: 3px;
  color: #dbdbdb;
  background: #1e1e1e;
  background-color: #1e1e1e;
}

.SingleDatePickerInput.SingleDatePickerInput_1.SingleDatePickerInput__withBorder.SingleDatePickerInput__withBorder_2 {
  border: 0.0px solid #dbdbdb;
  display: block;
}

.SingleDatePicker_1 {
  border: 0.0px solid #dbdbdb;
  display: block;
}

.SingleDatePicker_picker, .SingleDatePicker_picker_1, .SingleDatePicker_picker__directionLeft,
.SingleDatePicker_picker__directionLeft_2{
  filter:invert(100%);
}

/* For Mobile Phones and small screens ––––––––––––––––––––––––––––––––––––––––––––––––––*/
@media only screen and (max-width: 768px) {
  .four, .eight {
      min-width: 100%;
 }
  h1, h2, h3, p {
      text-align: center;
 }
  body {
      display: block;
      margin: 0px;
      overflow-y: scroll;
  }
  .div-for-charts {
      padding: 0px;
      width: 100%;
      text-align: center;
 }

 .div-user-controls {
    padding: 32px;
 }

 .side-by-side{
    display: inline-block;
    width: 48%;
  }


 .side-by-side-right{
    display: inline-block;
    width: 48%;
    float:right;
  }
  .div-for-charts{
    margin: 0px;
  }
}

/* width */
::-webkit-scrollbar {
  width: 10px !important;
  display: block !important;
}

/* Track */
::-webkit-scrollbar-track {
  background: #1e1e1e !important;
  border-radius: 10px !important;
  display: block !important;
}

/* Handle */
::-webkit-scrollbar-thumb {
  background: transparent;
}

/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
  background: #d8d8d870 !important;
}

EN

回答 1

Stack Overflow用户

发布于 2021-03-22 21:57:06

名为“四列div用户控件”和“八列div for图表bg灰色”的div组件分别表示侧栏和图表的“容器”。因此,您需要将H2和html.P作为侧栏html.Div (四列)和图表html.Div (八列)中的dcc.Graph的子列。以下是更新的代码:

代码语言:javascript
运行
复制
import dash
import dash_core_components as dcc
import dash_html_components as html

import plotly.express as px
import pandas as pd
import os

# Load data
df = px.data.stocks()

fig = px.line(df, x="date", y="GOOG", template="plotly_dark").update_layout(
    {"plot_bgcolor": "rgba(0, 0, 0, 0)", "paper_bgcolor": "rgba(0, 0, 0, 0)"}
)

# Initialize the application
app = dash.Dash(__name__)

# define de app
app.layout = html.Div(
    children=[
        html.Div(
            className="row",
            children=[
                html.Div(
                    className="four columns div-user-controls",
                    children=[
                        html.H2("Dash - STOCK PRICES"),
                        html.P("""Visualising time series with Plotly - Dash"""),
                        html.P("""Pick one or more stocks from the dropdown below."""),
                    ],
                ),
                html.Div(
                    className="eight columns div-for-charts bg-grey",
                    children=[
                        dcc.Graph(
                            id="timeseries",
                            config={"displayModeBar": False},
                            animate=True,
                            figure=fig,
                        ),
                    ],
                ),
            ],
        )
    ]
)

# Run the app
if __name__ == "__main__":
    app.run_server(debug=True)

注意,我简化了px.line图,因为我没有访问您链接的CSV文件的权限。以下是最终结果:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66742554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档