angularjs2 mysql_docker Django+mysql+ECharts+AngularJS简单搭建数据可视化(二)

本文展示了如何使用AngularJS2、Django和ECharts结合MySQL数据库创建数据可视化应用。通过调整ECharts配置,优化图表的视觉效果,包括标题、数据缩放和标注线的样式设计。
摘要由CSDN通过智能技术生成

紧接着上面内容

下面来优化下视觉效果。废话不多说,先上效果图(名字没想好,先忽略这个)

ebc3ee2ce416

效果图.png

js代码

title可以对图的标题进行样式规划;

dataZoom是缩放部分样式

series里面的markLine是对需要标注的线样式设计,我这里只标记了最大最小值,也可以指定坐标标注

var app = angular.module('myApp', []);

var pcData =[];

app.controller('siteCtrl', function($scope, $http) {

$http({

method: 'POST',

url: 'http://localhost:8000/test'

}).then(function successCallback(response) {

pcData = response.data.data;

//console.log(pcData);

var dates = pcData.map(function (item) {

return item[0];

});

//console.log(dates)

var data_a = pcData.map(function (item) {

return item[1];

});

var data_b = pcData.map(function (item) {

return item[2];

});

var data_c = pcData.map(function (item) {

return item[3];

});

//console.log(data)

var myChart = echarts.init(document.getElementById('main'));

var optionPC = {

title: {

text: '数值',

textStyle: {

fontSize: 12,

fontWeight: 400,

color: '#000000'

},

left: 5,

top: -5,

},

tooltip: {

trigger: 'axis',

axisPointer: {

animation: false,

type: 'cross',

lineStyle: {

color: '#376df4',

width: 2,

opacity: 1

}

}

},

legend: {

data: ['0反', '1反', '2反']

},

xAxis: {

type: 'category',

data: dates,

axisLabel: { //坐标轴刻度标签的相关设置

interval: 99,

rotate:'70',//旋转度数

}

},

yAxis: {

scale: true,

type: 'value',

min: function(value){return value.min;},

max: function(value){return value.max;}

},

dataZoom: [{

textStyle: {

color: '#8392A5'

},

start:99,

end:100,

bottom: -8,

handleIcon: 'path://M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',

dataBackground: {

areaStyle: {

color: '#8392A5'

},

lineStyle: {

opacity: 0.8,

color: '#8392A5'

}

},

brushSelect: true

}, {

type: 'inside'

}],

series: [{

name: '0反',

data: data_a,

type: 'line',

smooth: true,

markLine: {

symbol: 'none',

itemStyle: {

normal: {

lineStyle: {

type: 'dashed'

},

label: {

show: true,

position: 'left'

}

}

},

data: [

{

name: '峰线',

type: 'max'

},

{

name: '谷线',

type: 'min'

}

]

}

},{

name: '1反',

data: data_b,

type: 'line',

smooth: true,

markLine: {

symbol: 'none',

itemStyle: {

normal: {

lineStyle: {

type: 'dashed'

},

label: {

show: true,

position: 'left'

}

}

},

data: [

{

name: '峰线',

type: 'max'

},

{

name: '谷线',

type: 'min'

}

]

}

},{

name: '2反',

data: data_c,

type: 'line',

smooth: true,

markLine: {

symbol: 'none',

itemStyle: {

normal: {

lineStyle: {

type: 'dashed'

},

label: {

show: true,

position: 'left'

}

}

},

data: [

{

name: '峰线',

type: 'max'

},

{

name: '谷线',

type: 'min'

}

]

}

}

]

};

myChart.setOption(optionPC);

//console.log($scope.datas[0],$scope.datas[0][1],$scope.datas[0][5])

}, function errorCallback(response) {

// 请求失败执行代码

});

});

views.py

def test(request):

import pymysql

db = pymysql.connect("172.17.0.1","root","123456","test" )

cursor = db.cursor()

sql="SELECT zero,one,two from three WHERE id=37161865" #37161865 30522698

cursor.execute(sql)

a = cursor.fetchone()

sql="select * from demo"

cursor.execute(sql)

data = cursor.fetchall()

db.close()

# print(type(a))

print(a[0],a[1],a[2])

if len(a) == 3:

# print(a[0])

# print(a[0].find('['),a[0].find(']'))

zero = []

for i in a[0][a[0].find('[') + 1:a[0].find(']')].split(','):

zero.append(int(i.strip()))

# print(zero)

one = []

for i in a[1][a[1].find('[') + 1:a[1].find(']')].split(','):

one.append(int(i.strip()))

# print(one)

two = []

for i in a[2][a[2].find('[') + 1:a[2].find(']')].split(','):

two.append(int(i.strip()))

data_a = np.array(data)[:,[1,5]]

print(data_a[0])

data = method.graph_reminder_zero_to_two(data_a, zero, one, two)

else:

print("False")

print(data[0])

return HttpResponse(json.dumps({"code":0,

"message":"success",

"data":data}),

content_type="application/json")

method.py

# coding:utf-8

import numpy as np

def graph_reminder_zero_to_two(data, zero, one, two):

print("in method.py")

print(zero, one, two)

graph_data = list()

for i in data[:, 1]:

i = int(i)

if i in zero:

graph_data.append(0)

elif i in one:

graph_data.append(1)

elif i in two:

graph_data.append(2)

else:

print(type(i))

print("数据初始化失败!" +str(i))

return

# graph_data=data[:,1]%3

ids=data[:,0].tolist()

graph_start_fund = 0.0

graph_fund_zero = graph_start_fund

graph_fund_one = graph_start_fund

graph_fund_two = graph_start_fund

graph_zero = list()

graph_one = list()

graph_two = list()

for i in range(len(graph_data)):

if graph_data[i] == 0:

graph_fund_zero -= 1

graph_fund_one += 0.5

graph_fund_two += 0.5

graph_zero.append(graph_fund_zero)

graph_one.append(graph_fund_one)

graph_two.append(graph_fund_two)

elif graph_data[i] == 1:

graph_fund_zero += 0.5

graph_fund_one -= 1

graph_fund_two += 0.5

graph_zero.append(graph_fund_zero)

graph_one.append(graph_fund_one)

graph_two.append(graph_fund_two)

elif graph_data[i] == 2:

graph_fund_zero += 0.5

graph_fund_one += 0.5

graph_fund_two -= 1

graph_zero.append(graph_fund_zero)

graph_one.append(graph_fund_one)

graph_two.append(graph_fund_two)

else:

print("数据错误!")

return

print(ids[0],graph_zero[0])

return np.c_[ids,graph_zero,graph_one,graph_two].tolist()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值