精华内容
下载资源
问答
  • 复制折线图如何添加数据
    千次阅读
    2020-07-25 11:12:56

    可以复制搜索看看是否是想要的效果

    https://gallery.echartsjs.com/editor.html?c=xtdeZMuQ4t
    

    //SignalR

    https://blog.csdn.net/weixin_42768220/article/details/107575940
    

    也就是折线图1秒或者几秒获取一次数据(通过SignalR请求端口数据),当然请求数据库也是可以实现的,但是对于数据库性能也是特别消耗的,现在先看看动态的折线图是如何实现的吧
    //==============================================================
    子组件

    <template>
      <div :class="className" :style="{height:height,width:width}" />//单独的组件渲染对于Echarts
    </template>
    
    
    data() {
        return {
        	chart: null,
        	Obj: {//定义的变量用来存储获取过来的数据
    		        XData: [],
    		        YData: []
    		      }
        }
    }
    methods: {
    	SetData(data) {
          // debugger;
          // console.log(data,'data')
          let me = this;
          me.$el.removeAttribute("_echarts_instance_");
          me.chart = echarts.init(me.$el, "macarons");
          if (!isEmpty(data)) {
            me.initChart(data);
          } else {
            let EmptyChartImg =
              '<img class="EmptyChartImg" src="' + me.isEmptyChartImg + '">';
              me.$el.innerHTML = EmptyChartImg;
          }
        },
        SetSeriesData(dataValue){
            let me = this; //在父组件中通过$ref讲获取的数据过来接收dataValue
            if (!this.chart) {//判断最开始如果没有渲染过折线,那么就需要对折线图初始化
              me.SetData(dataValue);
            }else{//否则再次获取过来的数据不需要重新渲染,直接push获取过来的值
              if(this.Obj.YData.length>20){
              this.Obj.XData.shift()
              this.Obj.YData.shift();
                  
              }
              this.Obj.YData.push(dataValue.Value);
    
              this.Obj.XData.push(getTime(Math.round(new Date().getTime()/ 1000)));//获取当前的时间
              me.chart.setOption({//重新给data赋值
                  series: [{
                      data: this.Obj.YData
                  }],
                  xAxis: [{
                      data: this.Obj.XData
                  }],
              });
            }
        },
        initChart(dynamicData) {
          // debugger;//初始化
            let me = this;      
                this.Obj.XData.push(getTime(Math.round(new Date().getTime() / 1000)));
            if (!isEmpty(dynamicData.Value)) {
                this.Obj.YData.push(dynamicData.Value);
            }
          me.setOptions();//调用setOptions
        },  
        setOptions() {
            let me = this;      
            // 生成初始数据
          me.chart.setOption({//设置想要实现的样式
            title: {
              left: "center",
              text: "",
              textStyle: {
                fontWeight: 500,
                fontSize: "20"
              }
            },
            tooltip: {
              trigger: "axis"
            },
            grid: {
              left: "3%",
              right: "4%",
              bottom: "3%",
              containLabel: true
            },
            xAxis: {
              type: "category",
              boundaryGap: false,
              axisLine: {
                lineStyle: {
                  color: "#57617B"
                }
              },
              data: this.Obj.XData
            },
            yAxis: {
              name: "ss",
              type: "value",
              splitArea: {
                show: false
              },
              axisTick: {
                show: false //隐藏X轴刻度
              }
            },
            series: [
              {
                name: "发送",
                type: "line",
                showSymbol: false,
                lineStyle: {
                  normal: {
                    width: 1
                  }
                },
                data: this.Obj.YData
              }
            ]
          });
        },
    }
    
    function getTime() {
            var ts = arguments[0] || 0;
            var t, h, i, s,y,m,d;
            t = ts ? new Date(ts * 1000) : new Date();
            y = t.getFullYear();
            m = t.getMonth()+1;
            d = t.getDay();
    
            h = t.getHours();
            i = t.getMinutes();
            s = t.getSeconds();
            // 可根据需要在这里定义时间格式
            return y +'年'+m+'月'+d +'日'+ ' '+(h < 10 ? '0' + h : h) + ':' + (i < 10 ? '0' + i : i) + ':' + (s < 10 ? '0' + s : s);
        }
    

    //============================================================
    父组件

    <DynamicChart ref="DynamicChart"></DynamicChart>//在此组件中展示
    <Signalr @SignalrData="SignalrData"></Signalr>//Signalr获取端口数据
    SignalR获取的方法会在  https://blog.csdn.net/weixin_42768220/article/details/107575940  里阐述
    <script>
    import DynamicChart from '@/views/components/InsertManage/OPCUA/OPCUAHistory/DynamicChart'
    import Signalr from '@/views/components/InsertManage/OPCUA/Signalr'
    components:{
    	DynamicChart,
    	Signalr
    }
    methods:{
    	SignalrData(data){
                this.$refs.DynamicChart.SetSeriesData(data);//将值传过去
            },
    }
    </script>
    

    以上所实现的方法是通过SignalR获取数据传值,动态展示的方法,如果想要一直获取数据库的数据,来动态展示,也是可以实现的,就是需要通过setTimeout来实现,(setInterval实现的话可以的,缺点也很明显,破坏性比较强),用setTimeout循环调用(递归)就可以实现了,但是最好还是通过获取端口数据,后端也可以定时传值,也不用做循环。

    更多相关内容
  • matplotlib简介 ...在Linux下比较著名的数据图工具还有gnuplot,这个是免费的,Python有一个包可以调用gnuplot,但是语法比较不习惯,而且画图质量不高。 而 Matplotlib则比较强:Matlab的语法、python语言、l
  • C#导入Excel操作类 插入excel折线图 各种图表 好多个例子
  • 提取文献中的折线图/散点图数据

    千次阅读 2021-02-27 13:47:40
    以下图为例,使用数据提取网站提取折线图数据。 Hussein, H., Capp, S., & George, W. (1994). Velocity measurements in a high-Reynolds-number, momentum-conserving, axisymmetric, turbulent jet. ...

    提取文献中的折线图/散点图数据

    以下图为例,使用数据提取网站提取折线图数据。


    Hussein, H., Capp, S., & George, W. (1994). Velocity measurements in a high-Reynolds-number, momentum-conserving, axisymmetric, turbulent jet. Journal of Fluid Mechanics, 258, 31-75.

    1. 打开数据提取网站,如下图
      在这里插入图片描述

    2. 导入需要提取的折线图图片

    3. 选择绘图类型,点击Align Axes
      在这里插入图片描述

    4. 横纵轴各选择两个参考点。
      在这里插入图片描述

    5. 点击选中标定点,观察右上角的放大视图,使用光标键调整位置。使用 Shift+方向键 快速移动。调整完毕后,请点击”完成“。
      在这里插入图片描述

    6. 分别输入 X-轴上的两个标定点的 X-值和 Y-轴上的两个标定点的 Y-值,点击确定。
      在这里插入图片描述

    7. 由于要提取的折线为黑色,所以将前景色选为黑色。
      在这里插入图片描述

    8. 选择合适的画笔宽度,将要提取的折线图用画笔覆盖,点击运行( Δx和Δy 表示取点的密度,可自行调整)

    在这里插入图片描述

    1. 提取的点如下图所示,可以自行增加/调整/删除点
      在这里插入图片描述

    2. 调整好数据点后,点击查看数据
      在这里插入图片描述

    3. 根据自己的要求设置合适的输出数字格式,点击Format。折线图的数据如下:
      在这里插入图片描述

    4. 将数据复制到剪切板,在Origin中粘贴数据,点击绘图。选择绘图格式为折线图,将横纵坐标调整即可得到原文献当中的折线图。

    在这里插入图片描述

    数据提取网站:https://apps.automeris.io/wpd/index.zh_CN.html

    展开全文
  • .xlsx文件只能存储数据,不能存储对数据进行处理的VB代码,而.xlsm文件既可以存储数据,又可以存储代码。 新建一个.xlsm文件(打开.xlsx源数据文件并另存为.xlsm也可以),输入数据源(源数据和VB代码可以从以下...

    首先说一下.xlsm文件和.xlsx文件的区别:

           .xlsx文件只能存储数据,不能存储对数据进行处理的VB代码,而.xlsm文件既可以存储数据,又可以存储代码。

    新建一个.xlsm文件(打开.xlsx源数据文件并另存为.xlsm也可以),输入数据源(源数据和VB代码可以从以下链接下载):

                        原始数据以及 VBA 代码

    打开.xlsm文件后在当前Sheet的名字上右击,选“View Code”(或者直接快捷键Alt+F11打开VB编辑窗口),出现下图:

    图中红圈1表示当前工作簿的第一个工作表,系统命名为Sheet,我们重命名为RAW_DATA。写VB代码的时候通过这两个名称都可以引用到相应工作表,不过代码稍微会有一点不一样,我的代码使用的是系统命名,即Sheet1。

    双击图中的Sheet1,Sheet2,Sheet3以及红圈2中的Module1都会出现一个代码编辑区域,我的代码是写在Module1中的。(个人猜想在Sheet1中写的代码只能控制Sheet1中的对象,当要调用其他工资表数据时可能会有约束;而Module1是对整个工作簿的对象都有控制权,因为我的代码不是太复杂,但每个工资表都要用到,为了方便,我的代码就写在了Module1中)

    图中红圈3中三个按钮分别是运行,暂停,停止的作用,当代码写完后按绿色三角形运行,Debug时按蓝色方框结束Debug模式。

    接下来就没甚好说的了,Let me show you my code...

    (VB代码的注释用英文单引号“'”开始,而且只能单行注释。View-Toolbars-Edit工具栏里有一个注释代码块的按钮,很方便)

    以下代码段是针对代码的功能进行注释的。相对小白的来说,首先要理解每行代码的意思才能理解整个程序。(其实是为了防止我自己健忘)

    ' 由'开始的行是注释,直到本行结束
    ' Range()	--用于指定某一个或者某一些单元格区域
    ' Rows()	--指定某一行或者多行
    ' Columns()	--指定某一列或者多列
    
    Sub MyCode()
        
        Sheet2.UsedRange.ClearContents      	' 删除Sheet2工作表的所有单元格内容
        
        If Sheet3.ChartObjects.Count > 0 Then   	' 删除Sheet3工作表的所有图表。当对一个没有图表的工作表进行删除操作时会报错,
            Sheet3.ChartObjects.Delete          	' 所有要先进行判断,如果图表数大于0才执行删除操作
        End If
        
        Sheet1.Columns(3).Copy Destination:=Sheet2.Columns(1)   	' 将Sheet1第3列的数据拷贝到Sheet2的第一列
        Sheet1.Columns(4).Copy Destination:=Sheet2.Columns(3)
        Sheet1.Columns(5).Copy Destination:=Sheet2.Columns(6)
        Sheet1.Columns(6).Copy Destination:=Sheet2.Columns(4)
        
        Sheet2.Rows(1).Delete					' 删除Sheet2的第一行
        Sheet2.Range("A1") = "       TIME       "			' 设置Sheet2的A1单元格内容,注意这里有多余的空格
        Sheet2.Range("B1") = " Delta time(min) "
        Sheet2.Range("C1") = " Temp setting(deg) "
        Sheet2.Range("D1") = " Temp test(deg) "
        Sheet2.Range("E1") = " PCB Output(V) "
        Sheet2.Range("F1") = " MCU Output(12bit DAC) "
        Sheet2.Range("A1:F1").Font.Bold = True			' 把Sheet2的A1:F1区域字体加粗
        Sheet2.Range("A1:F1").Columns.AutoFit			
    	' 设置Sheet2的A到F列根据其第一行的内容而自动调节单元格宽度,上面设置内容时多余的空格是为了占位,使整列数据都可以完整显示
        'Sheet2.Columns("A:F").Select          			' 选择Sheet2的A到F列
        'Selection.HorizontalAlignment = Excel.xlCenter		' 对选择的区域设置为居中对齐
        Sheet2.Columns("A:F").HorizontalAlignment = Excel.xlCenter  ' 这一行和上面两行的结果一样,可相互替换
        'Sheet2.Columns("E").Select					' 选择Sheet2的E列
        'Selection.NumberFormatLocal = "0.00"			' 对选择的单元格区域进行格式化。0.00表示数字保留两位小数,0.00%表示以百分制表示。
        Sheet2.Columns("E").NumberFormatLocal = "0.00"    		' 这一行和上面两行的结果一样,可相互替换
        Sheet2.Columns("B").NumberFormatLocal = "0"			' 设置Sheet2的B列数学不显示小数部分
        
        countRows = Sheet2.UsedRange.Rows.Count            		' 计算Sheet2工作表所有数据的总行数
        
        Sheet2.Range("E2").Formula = "=IF(F2>824,(F2-824)/(4095-824)*5,(F2-824)/824*1.6)"		' 在Sheet2的E2单元格写入公式
        Sheet2.Range("E2:E" & countRows).FillDown			' 对E2单元格的内容向下填充到最后一行。countRows是前面定义的记录总行数的变量
        
        fragState = "FindStandbyStart"			' 设置变量并赋值
        startRows = 2
        endRows = 0
        countLoop = 0
        
        For i = 2 To countRows				' for循环,从2循环到countRows(表示总行数的变量),即从第2行遍历到最后一行
    
    	If i = countRows Then			
                endRows = countRows		
                fragState = "DrawChart"	
            End If
    
            If fragState = "FindStandbyStart" Then		' 判断是否相等
                If Sheet2.Range("C" & i) = 25 Then          ' 判断Sheet2当前行(i)的C列是否为25
                    fragState = "FindLoopEnd"		' 变量值改变(状态改变)
                End If					' 判断语句结束
            ElseIf fragState = "FindLoopEnd" Then		' Else if分支
                If Sheet2.Range("C" & i) = 95 Then          ' 判断Sheet2当前行(i)的C列是否为95
                    endRows = i - 1
                    fragState = "DrawChart"
                    'MsgBox endRows				' 调试的时候用了,就是把endRows的值打印出来看看是否正确
                End If
    	End If
            If fragState = "DrawChart" Then         	
                'MsgBox startRows
                'MsgBox endRows
                Sheet2.Range("B" & startRows).Formula = "=(A" & startRows & "-$A$" & startRows & ")*24*60"	
    		' 为了便于理解,这里可以把startRows当成2,即Sheet2.Range("B2").Formula = "=(A2-$A$2)*24*60",但实际上startRows不是固定的。
    		' 这样应该很容易理解了,就是在B2中写了个公式而已。注意这里的处理方式,变量是不需要写在双引号里的,然后用&连接起来。
                Sheet2.Range("B" & startRows, "B" & endRows).FillDown	' 对Sheet2的B列 从startRows行到endRows行 按startRow单元格的内容 进行填充
                
                x = Sheet3.Range("A" & countLoop * 15 + 1, "A" & countLoop * 15 + 15).Left	' 设置图表容器的左边缘
                y = Sheet3.Range("A" & countLoop * 15 + 1, "S" & countLoop * 15 + 1).Top	' 设置图表容器的右边缘
    	    w = Sheet3.Range("A1:S1").Width		' 设置图表容器的宽度为A列到S列
                h = Sheet3.Range("A1:A15").Height - 1	' 设置图表容器的高度为15行
    
                Set Ch1 = Sheet3.ChartObjects.Add(x, y, w, h)     	' Ch1相对于一个图表容器,后面要画的折线图的所有对象都在这个容器内,这里是设置容器大小
                
                If countLoop < 10 Then				' 设置图表容器的名字,为了控制名字的长度以致所有加了这个判断
                    Ch1.Name = "Result-0" & countLoop + 1		' 容器名字为格式为“Result-xx”
                Else
                    Ch1.Name = "Result-" & countLoop + 1
                End If
    
                With Ch1.Chart				' With是一个代码块,由End With结束。表示这个with块中的所有代码都是对Ch1.Chart的属性进行设置。
                    .HasTitle = True			' 如果没有With块,这句完全能用"Ch1.Chart.HasTitle = True"代替
                    .ChartTitle.Text = Ch1.Name		' 把图表容器的名字作为图表的标题
                    .ChartTitle.Left = 415			' 设置图表标题的位置
                    .ChartTitle.Top = -5
    
                    .PlotArea.Width = 885       		' 设置图表容器中 画图区域 相对于图表容器的位置
                    .PlotArea.Left = 10			' 图表容器中除了画图区域,还有标题,图列,以及坐标轴名字等其他对象
                    .PlotArea.Top = 15			' 设置合适的 画图区域,是为了其他对象更好的显示
                    .PlotArea.Height = 175
    
                    .Legend.Position = xlLegendPositionTop	' 将图例放在画图区域的上方。图例就是在一个有多个折线的图中,对每个折线含义的说明
                    .Legend.Left = 275			' 因为按上面的方法设置的图例位置稍微有点不太理想,所有这里对图例位置进行微调。
                    .Legend.Top = 20			' 注意这里的微调值是相对于图表容器的左上角,而不是 画图区域
                    .ChartType = xlLine			' 设置图表类型为折线图
    
                    .SeriesCollection.NewSeries		' 为折线图添加数据
                    .SeriesCollection(1).Values = Sheet2.Range("C" & startRows, "C" & endRows)	' 选择数据区域
                    .SeriesCollection(1).XValues = Sheet2.Range("B" & startRows, "B" & endRows)	' 选择X轴数据区域
                    .SeriesCollection(1).Name = Sheet2.Range("C1")					' 设置这一系列数据的名称,即图例的名称
                    .SeriesCollection(1).AxisGroup = 1	' 这里是指明这些数据用Y主坐标轴(图表中可以有左右两个表示不同意义的Y轴,左边是1,右边是2)
    
                    .SeriesCollection.NewSeries		' 添加新数据
                    .SeriesCollection(2).Values = Sheet2.Range("D" & startRows, "D" & endRows)
                    .SeriesCollection(2).XValues = Sheet2.Range("B" & startRows, "B" & endRows)
                    .SeriesCollection(2).Name = Sheet2.Range("D1")
                    .SeriesCollection(2).AxisGroup = 1
    
                    .SeriesCollection.NewSeries
                    .SeriesCollection(3).Values = Sheet2.Range("E" & startRows, "E" & endRows)
                    .SeriesCollection(3).XValues = Sheet2.Range("B" & startRows, "B" & endRows)
                    .SeriesCollection(3).Name = Sheet2.Range("E1")
                    .SeriesCollection(3).AxisGroup = 2	' 这一系列数据用的是Y副轴(右边)
                    
                    With .Axes(xlValue, xlPrimary)		' 对Y主坐标轴的属性进行设置
                        .MinimumScale = 0			' 设置Y主坐标轴的最小值
                        .MaximumScale = 115			' 最大值
                        .HasTitle = True			' 显示这个坐标轴的标题
                        .AxisTitle.Text = "Temp(Degree)"	' 设置标题为"Temp(Degree)"
                    End With
                    
                    With .Axes(xlValue, xlSecondary)	' 对Y副坐标轴的属性进行设置
                        .MinimumScale = -2
                        .MaximumScale = 12
                        .HasTitle = True
                        .AxisTitle.Text = "Voltage(V)"
                    End With
                    
                    With .Axes(xlCategory)			' 对X坐标轴的属性进行设置
                        .HasTitle = True
                        .AxisTitle.Text = "Time(min)"
                        .TickLabelSpacing = 200		' X轴坐标刻度太密了,设置每200个数据显示一个刻度。(设置范围是0-255)
                    End With
                    
                End With		' 注意,每一个With代码块都由With开始,End With结束
    
                countLoop = countLoop + 1
                startRows = endRows + 1
                fragState = "FindStandbyStart"
            End If
        Next
    End Sub
    

    现在对整个程序的功能进行一个简单的说明:原始数据是对一个产品进行工作寿命进行测试而得到的,所以数据总是在一定时间后又从新开始,但是这个一定时间稍微有点差别,这就导致了每次运行产生的数据长度是不太一样的。那如何区分每次运行产生的数据呢?请看Sheet2(DATA)的C列,C列每一次运行都是以95->50->72->95->50->72->...->25的方式结束的,但是每个值都会重复很多次。所以我就从C列开始查找,找到第一个95,表示第一次运行开始了,把行号startRows记录下来,然后接着找25,找的25后再向后查找95,这个95就表示第二次运行开始了,把这个行号减一就得到第一次运行的结束行号了。

    既然已经知道了数据范围,就可以根据数据画图了。

    下面的代码和上面一样,只是这一份的注释主要偏重于逻辑方面:

    ' 以'开始的为注释,一直到本行结束有效
    
    Sub MyCode()
        
        Sheet2.UsedRange.ClearContents      	' delete all the data of Sheet2
        
        If Sheet3.ChartObjects.Count > 0 Then   	' there is error if delete the sheet without chart
            Sheet3.ChartObjects.Delete          	' delete all the chart
        End If
        
        Sheet1.Columns(3).Copy Destination:=Sheet2.Columns(1)   ' 数据拷贝
        Sheet1.Columns(4).Copy Destination:=Sheet2.Columns(3)
        Sheet1.Columns(5).Copy Destination:=Sheet2.Columns(6)
        Sheet1.Columns(6).Copy Destination:=Sheet2.Columns(4)
        
        Sheet2.Rows(1).Delete
        Sheet2.Range("A1") = "       TIME       "		' 每一列数据的名称
        Sheet2.Range("B1") = " Delta time(min) "
        Sheet2.Range("C1") = " Temp setting(deg) "
        Sheet2.Range("D1") = " Temp test(deg) "
        Sheet2.Range("E1") = " PCB Output(V) "
        Sheet2.Range("F1") = " MCU Output(12bit DAC) "
        Sheet2.Range("A1:F1").Font.Bold = True
        Sheet2.Range("A1:F1").Columns.AutoFit
        'Sheet2.Columns("A:F").Select          		' select columns A to F
        'Selection.HorizontalAlignment = Excel.xlCenter
        Sheet2.Columns("A:F").HorizontalAlignment = Excel.xlCenter    	' same with above 2 rows
        'Sheet2.Columns("E").Select
        'Selection.NumberFormatLocal = "0.00"
        Sheet2.Columns("E").NumberFormatLocal = "0.00"    	' same with above 2 rows
        Sheet2.Columns("B").NumberFormatLocal = "0"
        
        countRows = Sheet2.UsedRange.Rows.Count            	' get the number of rows
        
        Sheet2.Range("E2").Formula = "=IF(F2>824,(F2-824)/(4095-824)*5,(F2-824)/824*1.6)"	' 填充公式,这里是把12位的ADC采样数据转换成电压值
        Sheet2.Range("E2:E" & countRows).FillDown						' 把上面填充的公式下拉到最后一行
        
        fragState = "FindStandbyStart"
        startRows = 2			' 原始数据的第一次循环一定从第二行开始,所以不用找了
        endRows = 0
        countLoop = 0			' 运行次数计数,主要是为了画图的时候决定图表位置,不能所有的图表都重叠画在一起啊
        
        For i = 2 To countRows
        
            If i = countRows Then		' 因为程序可能在任意地方停止,如果没有这个判断,就只能按部就班每次找到25后面的第一个95的前一行才能得到endRows	
                endRows = countRows		' 但如果数据就停在了25呢??那fragState的状态就永远到不了"DrawChart",也就永远无法画出最后一个图了
                fragState = "DrawChart"	' 所有这个If的作用只是为了画最后一个不完整循环的图形。
            End If
            
            If fragState = "FindStandbyStart" Then		' 因为前面已经记录了第一个95的位置,即startRows
                If Sheet2.Range("C" & i) = 25 Then         	' 所以这里是在找25了
                    fragState = "FindLoopEnd"		' 如果找到了就进入下一个状态,即找下一个95
                End If
            ElseIf fragState = "FindLoopEnd" Then
                If Sheet2.Range("C" & i) = 95 Then         	' 如果找到了下一个95,即下一个循环的开始
                    endRows = i - 1				' 则上一行就是上次循环的结束,即endRows
                    fragState = "DrawChart"			' 找到了startRows和endRows,制图的数据源就确定了,也就可以开始画图了
                    'MsgBox endRows
                End If
    	End If
            If fragState = "DrawChart" Then         	' 开始画图
                'MsgBox startRows
                'MsgBox endRows
                Sheet2.Range("B" & startRows).Formula = "=(A" & startRows & "-$A$" & startRows & ")*24*60"	' 填充公式并下拉
                Sheet2.Range("B" & startRows, "B" & endRows).FillDown					' 这里是计算每一行数据距循环开始的时间,单位为分钟
                
                x = Sheet3.Range("A" & countLoop * 15 + 1, "A" & countLoop * 15 + 15).Left
                y = Sheet3.Range("A" & countLoop * 15 + 1, "S" & countLoop * 15 + 1).Top
                w = Sheet3.Range("A1:S1").Width
                h = Sheet3.Range("A1:A15").Height - 1
                Set Ch1 = Sheet3.ChartObjects.Add(x, y, w, h)     	' 定义图表容器的大小
                
                If countLoop < 10 Then				' 给图表容器命名,并保证名字长度一致	
                    Ch1.Name = "Result-0" & countLoop + 1
                Else
                    Ch1.Name = "Result-" & countLoop + 1
                End If
    
                With Ch1.Chart
                    .HasTitle = True
                    .ChartTitle.Text = Ch1.Name
                    .ChartTitle.Left = 415
                    .ChartTitle.Top = -5
    
                    .PlotArea.Width = 885       			' 设置作图区大小
                    .PlotArea.Left = 10
                    .PlotArea.Top = 15
                    .PlotArea.Height = 175
    
                    .Legend.Position = xlLegendPositionTop		' 这三行是把图例放置在任意位置的法宝。第一行是为了让图例单行显示
                    .Legend.Left = 275				' xlLegendPositionRight可以让图例多行显示,然后再利用这两行调整位置
                    .Legend.Top = 20
    
                    .ChartType = xlLine				' 折线图
                    .SeriesCollection.NewSeries			' 添加数据
                    .SeriesCollection(1).Values = Sheet2.Range("C" & startRows, "C" & endRows)
                    .SeriesCollection(1).XValues = Sheet2.Range("B" & startRows, "B" & endRows)
                    .SeriesCollection(1).Name = Sheet2.Range("C1")	' 设置图例名称
                    .SeriesCollection(1).AxisGroup = 1		' 设置参考坐标
                    .SeriesCollection.NewSeries
                    .SeriesCollection(2).Values = Sheet2.Range("D" & startRows, "D" & endRows)
                    .SeriesCollection(2).XValues = Sheet2.Range("B" & startRows, "B" & endRows)
                    .SeriesCollection(2).Name = Sheet2.Range("D1")
                    .SeriesCollection(2).AxisGroup = 1
                    .SeriesCollection.NewSeries
                    .SeriesCollection(3).Values = Sheet2.Range("E" & startRows, "E" & endRows)
                    .SeriesCollection(3).XValues = Sheet2.Range("B" & startRows, "B" & endRows)
                    .SeriesCollection(3).Name = Sheet2.Range("E1")
                    .SeriesCollection(3).AxisGroup = 2
                    
                    With .Axes(xlValue, xlPrimary)
                        .MinimumScale = 0
                        .MaximumScale = 115
                        .HasTitle = True
                        .AxisTitle.Text = "Temp(Degree)"
                    End With
                    
                    With .Axes(xlValue, xlSecondary)
                        .MinimumScale = -2
                        .MaximumScale = 12
                        .HasTitle = True
                        .AxisTitle.Text = "Voltage(V)"
                    End With
                    
                    With .Axes(xlCategory)
                        .HasTitle = True
                        .AxisTitle.Text = "Time(min)"
                        .TickLabelSpacing = 200
                    End With
                    
                End With
    
                countLoop = countLoop + 1		' 循环次数递增,表示一个循环的图表已经制作完成,将开始下一个循环图表的制作
                startRows = endRows + 1             ' 记录好下一次循环开始位置,也可以写成startRows = i
                fragState = "FindStandbyStart"	' 进入开始寻找下一个25的状态
            End If
        Next					' for循环的结束
    End Sub						' 函数结尾
    

    OVER

     

     

     

    展开全文
  • echarts 折线图

    2022-05-16 16:28:34
    echarts 折线图,横纵坐标轴线颜色、文字颜色,网格线,坐标轴两侧留白,数据渐变,刻度线等;

    Echarts 常用各类图表模板配置

    注意: 这里主要就是基于各类图表,更多的使用 Echarts 的各类配置项;

    以下代码都可以复制到 Echarts 官网,直接预览;



    一、折线图

    echarts 折线图

    option = {
      color: ['#32E5FF'],
      tooltip: {
        trigger: 'axis'
      },
      grid: {
        top: '30%',
        left: '10%',
        right: '10%',
        bottom: '20%',
        containLabel: true
      },
      xAxis: {
        type: 'category',
        data: [
          '2021-05',
          '2021-06',
          '2021-07',
          '2021-08',
          '2021-09',
          '2021-10',
          '2021-11'
        ],
        axisLine: {
          show: true,
          lineStyle: {
            color: 'rgba(20, 35, 87, 1)'
          }
        },
        boundaryGap: true, // 坐标两侧是否留白
        axisTick: {
          show: false  // 是否显示刻度线
        }
      },
      yAxis: [
        {
          type: 'value',
          axisLabel: {
            color: '#FF44AA', // y 轴文字颜色
            formatter: '{value}  °C'
          },
          axisLine: {
            show: true,
            lineStyle: {
              color: '#E6E6FA'  // y 轴轴线颜色
            }
          },
          splitLine: {
            lineStyle: {
              color: '#FFDEAD', //grid 区域中的分隔线颜色
              width: 1,
              type: 'solid'
            }
          }
        },
        {
          type: 'value',
          name: '(摄氏度)',
          position: 'left',
          alignTicks: true,
          nameGap: 8,
          axisLine: {
            show: false  // 是否显示 y 轴轴线
          },
          axisLabel: {
            formatter: '{value}'
          },
          nameTextStyle: {
            padding: [0, 10, 8, 0] // 单位位置
          }
        }
      ],
      series: [
        {
          type: 'line',
          name: '折线图',
          data: ['74', '99', '84', '75', '86', '74', '53'],
          label: {
            show: true,
            position: 'top',
            formatter: '{c} °C',
            color: '#00DDAA',
            fontSize: '10px',
            fontFamily: 'ArialMT'
          },
          itemStyle: {
            color: '#FFE4E1', // 数据颜色
            gradientColorNum: 1
          },
          areaStyle: {
            color: {
              x: 0,
              y: 0,
              x2: 0,
              y2: 1,
              colorStops: [
                {
                  offset: 0.1,
                  color: 'rgba(6, 252, 254, 0.1) ' // 0% 处的颜色
                },
                {
                  offset: 0.5,
                  color: 'rgba(6, 252, 254, 0.5)' // 0% 处的颜色
                },
                {
                  offset: 0.7,
                  color: 'rgba(6, 252, 254, 0.3)' // 0% 处的颜色
                },
                {
                  offset: 0.9,
                  color: 'rgba(0,0,0, 0.1)' // 100% 处的颜色
                }
              ]
            }
          }
        }
      ]
    };
    

    二、环形图

    echarts 环形图:多层嵌套,自定义 legend 位置、颜色,中间插入数据及文字,颜色渐变;

    文章链接 :https://blog.csdn.net/aibujin/article/details/124796709?spm=1001.2014.3001.5501

    三、k 线图

    文章链接 :https://blog.csdn.net/aibujin/article/details/124797924?spm=1001.2014.3001.5501

    四、横向柱状图

    echarts 横向柱状图,坐标轴隐藏,网格线颜色渐变,网格默认背景,柱状图边框宽度/颜色,数据渐变,刻度线隐藏等;

    文章链接: https://blog.csdn.net/aibujin/article/details/124802889?spm=1001.2014.3001.5501

    五、折线图 + 柱状图

    echarts 折线图 + 柱状图,左右两侧y轴线,横纵坐标轴线颜色、文字颜色,网格线,坐标轴两侧留白,数据渐变,刻度线等;

    文章链接: https://blog.csdn.net/aibujin/article/details/124803493?spm=1001.2014.3001.5501

    六、3D 柱状图

    echarts 3D 柱状图,多个柱状图叠加,y轴内刻度线、隐藏横坐标,文字颜色,网格线,坐标轴两侧留白,数据渐变,刻度线等;

    文章链接: https://blog.csdn.net/aibujin/article/details/124879825?spm=1001.2014.3001.5501

    展开全文
  • 像电影名中的数据比较有特点,我们可以通过拆分这个功能自动拆分出电影的中文名称、上映年代...可以为特定的数据添加标记 像这样的数字太长了,可以对数据格式进行设置 可以选择合适的小数位数和度量单位 ...
  • 在本教程中,您将学习怎样用Python来创建专业的线形。在接下来的练习中,您将使用您的新技能来处理真实世界的数据集。准备好笔记本我们首先设置编码环境。import pandas as pdimport matplotlib.pyplot as plt%...
  • Android——折线图显示 利用 hellocharts-library-1.5.8 jar包实现折线图 hellocharts-library-1.5.8.jar网盘链接 链接:https://pan.baidu.com/s/1sKVNOxQ9U4rR81v1U1OazQ 提取码:i2nn 复制这段内容后打开百度网盘...
  • 如何将Excel数据导入MATLAB中?望高手支招!不一拷贝到data中啊,你使用xlsread时指定excel绝对路径就了嘛二如果只是几个很大的矩阵,你直接在matlab中定义矩阵,再复制粘贴得了定义矩阵就先定义个空的呗比如一维:a...
  • echarts绘制折线图分段显示颜色
  • 很多时候需要从后端获取值更新图表,这就涉及到动态更新图表数据; 使用echarts的时候,往往需要x轴和y轴的一一对应数组,比如 xAxis: { data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"] }, yAxis: {}, ...
  • 前言最近做项目的时候,产品说要在后台的首页放多折线图(不是多数据折线图),但我上去网上找,基本是多数据折线图。例如:同时换关键字也没什么可参考的。多折线图实现找不到参考的,只能自己摸索。于是尝试将呈现...
  • Java折线图绘制

    2022-07-08 16:34:35
    Java绘制数组的折线图
  • 动态折线图也受到了不少数据可视化爱好者的喜爱,频繁出现在各式作品当中。动态折线图的优势在于“动” —— 折线图从左向右展开,有利于引导读者视线,也有利于变量突出随时间的变化。 动态折线图数据通常至少...
  • 如何用Graphpad Prism 8作折线图

    千次阅读 2021-03-07 22:15:30
    如何用Graphpad Prism 8作折线图如何用Graphpad Prism 8作折线图Prism 8 有8种数据类型,Prism数据表的格式决定可制作的图表种类和可执行的分析类型。选择一个数据表格式可以使Prism创建合适数据数据表,然后创建...
  • 介绍chart.js中折线图的常用属性及效果
  • 3、在data里定义chartLine为nullchartLine:null,public_data:[],//定义X轴data1:[],//y轴上周数据data2:[],//y轴本周数据4、在methods:{}获取ID并获取接口数据及调用methods:{drawLineChart(){th...
  • 本文给出Matlab绘制多组数据折线图的代码,可以满足期刊论文发表的绘图要求。
  • wps word如何绘制一有一条线的折线图

    千次阅读 2021-01-12 16:24:01
    wps word如何绘制一有一条线的折线图今天,小编给大家介绍在WPS Word文档中插入制作折线图的方法,希望对大家有所帮助。具体如下:1. 首先,请大家在自己的手机中找到【WPS】图标,点击进入主界面,然后选择最上面的...
  • Tableau可视化技巧--不一样的折线图

    千次阅读 2022-01-20 18:22:41
    当我们需要展现时间维度上的数据变化时,折线图往往是不二选择。并且,使用折线图来描述趋势变化,突出变化速率也是数据分析中的普遍选择。 下面我们讲解几种Tableau中常用的折线图,以及它们的实现步骤。 主要有 ...
  • Hello,大家好,今天跟大家分享下如何使用切片器更改图表类型,效果如下动图,在这里忙完可以通过点击不同的图表类型来快速的切换图表,通过柱形图看销售数据对比,折线图看销售数据的走势,圆环图看销售数据占比,...
  • python matplotlib绘制折线图

    千次阅读 2021-11-18 11:22:38
    前言 众所周知,matplotlib 是一款功能强大开源的数据可视化模块,凭借着强大的扩展性构建出更... 折线图是在坐标中通过线条升降的方式展示随着某种变化而变化的连续性数据 通过折线的起伏表示数据的增减变化的情况
  • 然后做成折线图,并将折线图插入到原本的excel中。 我在网上百度了很久,看到有用xlsxwriter的worksheet.insert_chart方法,但是这个方法好像是将原始数据复制到里另一个excel中并在新生成的...
  • (可以直接复制代码到echarts修改配置项 !!!) let piedata = 25; option = { series: [ { type: "pie", radius: ["72", "80"], //环形的内外半径(大小) center: ["50%", "50%"], //整个图形的位置 ...
  • 复制B列的数据。打开CAD,输入“pl”,回车。然后在命令行直接“Ctrl+V”可以以这些点直接生成一条多段线。上面的例子相当简单。为什么可以直接复制呢?其实CAD是可以读取从Excel在复制过去的内容的。那么我们就可以...
  • echarts折线图实现渐变效果

    千次阅读 2022-01-10 10:51:56
    先看下效果图是这个样子的 ,和普通的折线图最明显的区别就是需要做成渐变效果。 目录 1、官网找例子 2、初步改造示例,有个雏形 3、细节改造和优化 4、全部代码 5、原始效果和完成效果对比 1、官网找例子 ...
  • 先做出柱形图,然后选择一个项目的柱形,右键-选择图表类型- 选择折线图就行了选择一个数据系列做成一种图形,比如柱型,再选择一种数据拖进图中,右键设置数据系列,改变其图表类型就OK了。先选柱状图 画出两个柱状...
  • 先上代码(复制过去直接用) ...--折线趋势--> <div class="graph-doubleLine-warp"> <el-row :gutter="20"> <el-col :span="16"> <div class="selection-box">
  • 本节内容:PHP折线图的生成函数例子:复制代码 代码示例:/** php生成折线图* by www.jbxue.com*/function line_stats_pic($value_y,$width,$high,$strong=1,$fix=0){//y值处理函数function line_point_y($num,$width...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,355
精华内容 3,342
关键字:

复制折线图如何添加数据