极度嘟嘟咕噜

导航

 

实现折线图

import pyecharts.options as opts
from pyecharts.charts import Line, Map
from pyecharts.commons.utils import JsCode
import pymysql
from pyecharts.globals import ThemeType

connection = pymysql.connect(host='localhost',
                                user='root',
                                passwd='root',
                                db='phicdata',
                                port=3306,
                                charset='utf8'
                                )
cur = connection.cursor()  # 游标(指针)cursor的方式操作数据
sql = "select year1,year2,year3,year4,year5,year6,year7,year8,year9,year10,year11,year12,year13,year14,year15   from phic1 where id=1 or id=2 or id=3 or id=4 or id=5 or id=5 or id=6 or id=7 or id=8"  # sql语句
cur.execute(sql) #execute(query, args):执行单条sql语句。
results=cur.fetchall() #使结果全部可看
print(results)

#转换成列表形式,以便于填入图表的数据
data1=results[0]
h=list(data1)
data2=results[1]
i=list(data2)
data3=results[2]
j=list(data3)
data4=results[3]
k=list(data4)
data5=results[4]
l=list(data5)
data6=results[5]
m=list(data6)
data7=results[6]
n=list(data7)
data8=results[7]
o=list(data8)
print(h)
def  line_scatter() -> Line:

 js_formatter = """function (params) {
      console.log(params);
      return '人口数量 ' + params.value + (params.seriesData.length ? ':' + params.seriesData[0].data : '');
  }"""

 line = (
    # Line(init_opts=opts.InitOpts(theme=ThemeType.CHALK))
     Line(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
      .add_xaxis(
       xaxis_data=[
           "2004",
           "2005",
           "2007",
           "2008",
           "2009",
           "2010",
           "2011",
           "2012",
           "2013",
           "2014",
           "2017",
           "2018",
      ]
  )
      .extend_axis(
       xaxis_data=[
           "2004",
           "2005",
           "2007",
           "2008",
           "2009",
           "2010",
           "2011",
           "2012",
           "2013",
           "2014",
           "2017",
           "2018",
      ],
       xaxis=opts.AxisOpts(
           type_="category",
           axistick_opts=opts.AxisTickOpts(is_align_with_label=True),
           axisline_opts=opts.AxisLineOpts(
               is_on_zero=False, linestyle_opts=opts.LineStyleOpts(color="#6e9ef1")
          ),
           axispointer_opts=opts.AxisPointerOpts(
               is_show=True, label=opts.LabelOpts(formatter=JsCode(js_formatter))
          ),
      ),
  )
      .add_yaxis(
       series_name="卫生人员总数",
       is_smooth=True,
       symbol="emptyCircle",
       is_symbol_show=False,
       color="#d14a61",
       y_axis=h,
       label_opts=opts.LabelOpts(is_show=False),
       linestyle_opts=opts.LineStyleOpts(width=2),
  )
      .add_yaxis(
       series_name="卫生技术人员",
       is_smooth=True,
       symbol="emptyCircle",
       is_symbol_show=False,
       color="#000000",
       y_axis=i,
       label_opts=opts.LabelOpts(is_show=True),
       linestyle_opts=opts.LineStyleOpts(width=2),
  )
      .add_yaxis(
       series_name="注册护士",
       is_smooth=True,
       symbol="emptyCircle",
       is_symbol_show=False,
       color="#8AFEF1",
       y_axis=j,
       label_opts=opts.LabelOpts(is_show=False),
       linestyle_opts=opts.LineStyleOpts(width=2),
  )
      .add_yaxis(
       series_name="其他技术人员",
       is_smooth=True,
       symbol="emptyCircle",
       is_symbol_show=False,
       color="#B00000",
       y_axis=k,
       label_opts=opts.LabelOpts(is_show=False),
       linestyle_opts=opts.LineStyleOpts(width=2),
  )
      .add_yaxis(
       series_name="管理人员",
       is_smooth=True,
       symbol="emptyCircle",
       is_symbol_show=False,
       color="#30F000",
       y_axis=l,
       label_opts=opts.LabelOpts(is_show=False),
       linestyle_opts=opts.LineStyleOpts(width=2),
  )
      .add_yaxis(
       series_name="工勤人员",
       is_smooth=True,
       symbol="emptyCircle",
       is_symbol_show=False,
       color="#6e9ef1",
       y_axis=m,
       label_opts=opts.LabelOpts(is_show=False),
       linestyle_opts=opts.LineStyleOpts(width=2),
  )
      .add_yaxis(
       series_name="乡村医生和卫生员",   #名字
       is_smooth=True,              #是否平滑
       symbol="emptyCircle",       #符号
       is_symbol_show=False,
       color="#F00000",      #颜色
       y_axis=n,
       label_opts=opts.LabelOpts(is_show=False),
       linestyle_opts=opts.LineStyleOpts(width=2),
  )

      .set_global_opts(
       legend_opts=opts.LegendOpts(),
       tooltip_opts=opts.TooltipOpts(trigger="none", axis_pointer_type="cross"),
       xaxis_opts=opts.AxisOpts(
           type_="category",
           axistick_opts=opts.AxisTickOpts(is_align_with_label=True),
           axisline_opts=opts.AxisLineOpts(
               is_on_zero=False, linestyle_opts=opts.LineStyleOpts(color="#d14a61")
          ),
           axispointer_opts=opts.AxisPointerOpts(
               is_show=True, label=opts.LabelOpts(formatter=JsCode(js_formatter))
          ),
      ),
       yaxis_opts=opts.AxisOpts(
           type_="value",
           splitline_opts=opts.SplitLineOpts(
               is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)
          ),
      ),
         toolbox_opts=opts.ToolboxOpts(
             # 是否显示该工具
             is_show=True,

             # 工具栏 icon 的布局朝向。
             # 可选:'horizontal', 'vertical'
             orient="vertical",

             # 工具栏组件离容器左侧的距离
             # left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
             # 也可以是 'left', 'center', 'right','top', 'middle', 'bottom'
             # 如果 left 的值为'left', 'center', 'right',组件会根据相应的位置自动对齐
             pos_left="90%",

        ),


  )

  )
 return line
line_scatter().render('visual01text.html')
  • 之后依次实现了四个图

生成后使用page方法实现可拖拽的组件

# page=Page(layout=Page.DraggablePageLayout)
# page.add(visual01.line_scatter(),
#
#                 visual05.bar,
#                 visual06.bar,
#                 visual02.map,
#                 visual03.c
#                 )
#
# page.render("visualAll.html")
  • 布局调整好以后点击save config 会自动下载一个json文件(保存到与项目同一目录)

  •  

再次进入项目进行整合

 

执行此行代码

最后进行在生成的html中进行一些细节方面的调整

可视化就到此结束啦

最终效果图如下:

 

 

posted on 2021-11-15 10:25  极度嘟嘟咕噜  阅读(475)  评论(0)    收藏  举报