精华内容
下载资源
问答
  • Excel折线图面积图模板-多层折线图
  • 看到这个标题,可能有点发懵,啥叫多层折线图啊?这个是我自己取的名字,是因为那天我遇到了这样一个需求。UI图.png呐!这还是一个宝塔型的折线图,根据常识,很容易就知道这里面的交互逻辑:一指多控。曾经有一个...

    看到这个标题,可能有点发懵,啥叫多层折线图啊?这个是我自己取的名字,是因为那天我遇到了这样一个需求。

    a7943fd329bb

    UI图.png

    呐!这还是一个宝塔型的折线图,根据常识,很容易就知道这里面的交互逻辑:一指多控。曾经有一个华丽的需求摆在我的面前,我没有珍惜,后来出了bug被客户怼我才追悔莫及,如果上天能再给我一次机会的话,我一定要自己写一个出来。于是,就有了下面的效果。

    a7943fd329bb

    效果图.gif

    如果gif加载失败,请看这里~

    a7943fd329bb

    折线图.jpg

    这里面全部都是使用canvas绘制的,比如画折线canvas.drawPath,画圆点drawCircle,画坐标线canvas.drawLine,画文字canvas.drawText等等。代码注释写的也比较详细,就不一一介绍了。直接上代码:

    import android.content.Context;

    import android.graphics.Canvas;

    import android.graphics.Color;

    import android.graphics.Paint;

    import android.graphics.Path;

    import android.graphics.Point;

    import android.support.annotation.Nullable;

    import android.support.v4.content.ContextCompat;

    import android.util.AttributeSet;

    import android.util.Log;

    import android.view.MotionEvent;

    import android.view.View;

    import java.util.ArrayList;

    import java.util.Collections;

    import java.util.Comparator;

    import java.util.List;

    /**

    * 多层折线图控件

    * Created by zhuyong on 2018/8/30.

    */

    public class MyChatView extends View {

    private Context mContext;

    private Paint mPaintLine;//折线图

    private Paint mPaintCircle;//圆的外边框

    private Paint mPaintPoint;//圆内填充

    private Paint mPaintBottomLine;//底部X轴

    private Paint mPaintLimit;//指示线

    private Paint mPaintText;//底部X坐标文字

    private int mBottomTextHeight = 50;//底部X轴文字所占总高度,单位dp

    private int mSingleLineHeight = 100;//单个折线图的高度,单位dp

    private int mPaddingTB = 10;//折线图上下的偏移量,单位dp

    private int mLineColor;//折线图的颜色

    protected int[] mColors;//几种颜色

    private List> mListAll = new ArrayList<>();//数据源

    private int mViewWidth;//控件宽高

    private int mViewHeight;//控件宽高

    public MyChatView(Context context) {

    this(context, null);

    }

    public MyChatView(Context context, @Nullable AttributeSet attrs) {

    this(context, attrs, 0);

    }

    public MyChatView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

    super(context, attrs, defStyleAttr);

    mContext = context;

    initView();

    }

    /**

    * 赋值

    *

    * @param list

    */

    public void setData(List> list) {

    if (list == null || list.size() == 0) {

    return;

    }

    this.mListAll = list;

    invalidate();

    }

    /**

    * 设置折线图颜色

    *

    * @param position

    */

    private void setLineColor(int position) {

    mLineColor = mColors[position % mColors.length];

    mPaintLine.setColor(mLineColor);

    mPaintCircle.setColor(mLineColor);

    }

    private void initView() {

    mColors = new int[]{ContextCompat.getColor(mContext, R.color.colorAccent)

    , ContextCompat.getColor(mContext, R.color.colorPrimary)};

    mPaintLine = new Paint();

    mPaintLine.setStyle(Paint.Style.STROKE);

    mPaintLine.setStrokeWidth(2);

    mPaintLine.setAntiAlias(true);

    mPaintCircle = new Paint();

    mPaintCircle.setStyle(Paint.Style.STROKE);

    mPaintCircle.setStrokeWidth(3);

    mPaintCircle.setAntiAlias(true);

    mPaintPoint = new Paint();

    mPaintPoint.setStyle(Paint.Style.FILL);

    mPaintPoint.setColor(Color.WHITE);

    mPaintPoint.setAntiAlias(true);

    mPaintBottomLine = new Paint();

    mPaintBottomLine.setStyle(Paint.Style.STROKE);

    mPaintBottomLine.setStrokeWidth(3);

    mPaintBottomLine.setColor(Color.parseColor("#999999"));

    mPaintBottomLine.setAntiAlias(true);

    mPaintLimit = new Paint();

    mPaintLimit.setStyle(Paint.Style.FILL);

    mPaintLimit.setStrokeWidth(2);

    mPaintLimit.setColor(Color.parseColor("#000000"));

    mPaintLimit.setAntiAlias(true);

    //画笔->绘制字体

    mPaintText = new Paint();

    mPaintText.setAntiAlias(true);

    mPaintText.setStyle(Paint.Style.FILL);

    mPaintText.setColor(Color.parseColor("#666666"));

    mPaintText.setTextSize(sp2px(mContext, 14));

    }

    @Override

    protected void onDraw(Canvas canvas) {

    super.onDraw(canvas);

    for (int jjj = 0; jjj < mListAll.size(); jjj++) {

    List itemList = mListAll.get(jjj);

    if (itemList != null && itemList.size() > 0) {

    float mMaxVal = Collections.max(itemList, new MyComparator()).getVal();

    Log.i("TAG", "最大值:" + mMaxVal);

    setLineColor(jjj);

    Path path = new Path();

    List pointList = new ArrayList<>();

    for (int i = 0; i < itemList.size(); i++) {

    int xDiv = 0;

    if (itemList.size() > 1) {

    xDiv = (mViewWidth - getPaddingLeft() - getPaddingRight()) / (itemList.size() - 1);

    }

    MyModel item = itemList.get(i);

    float x = i * xDiv;

    float y = item.getVal() * (dip2px(mContext, mSingleLineHeight - mPaddingTB * 2)) / mMaxVal;

    y = ((dip2px(mContext, mSingleLineHeight)) * (jjj + 1)) - dip2px(mContext, mPaddingTB * 2) - y;

    if (i == 0) {

    path.moveTo(x + getPaddingLeft(), y + dip2px(mContext, mPaddingTB));

    } else {

    path.lineTo(x + getPaddingLeft(), y + dip2px(mContext, mPaddingTB));

    }

    /**

    * 这里记录一下xy坐标,用于后面绘制小球

    */

    Point point = new Point();

    point.x = (int) x;

    point.y = (int) y;

    pointList.add(point);

    }

    //画折线

    canvas.drawPath(path, mPaintLine);

    //画小圆球

    drawCircle(canvas, pointList, jjj);

    //画文字

    if (jjj == mListAll.size() - 1) {

    drawText(canvas, pointList);

    }

    }

    }

    /**

    * 画竖线,指示线

    */

    if (mLineX > 0) {

    canvas.drawLine(mLineX, 0, mLineX, mViewHeight - dip2px(mContext, mBottomTextHeight), mPaintLimit);

    }

    }

    /**

    * 画圆和底部X轴

    *

    * @param canvas

    * @param pointList

    */

    private void drawCircle(Canvas canvas, List pointList, int jjj) {

    for (int i = 0; i < pointList.size(); i++) {

    Point point = pointList.get(i);

    //画圆圈

    canvas.drawCircle(point.x + getPaddingLeft(), point.y + dip2px(mContext, mPaddingTB), 10, mPaintCircle);

    if (position == i && mLineX > 0) {

    mPaintPoint.setColor(mLineColor);

    } else {

    mPaintPoint.setColor(Color.WHITE);

    }

    //填充圆内空间

    canvas.drawCircle(point.x + getPaddingLeft(), point.y + dip2px(mContext, mPaddingTB), 9, mPaintPoint);

    //画X轴间隔线

    canvas.drawLine(point.x + getPaddingLeft(), dip2px(mContext, mSingleLineHeight) * (jjj + 1), point.x + getPaddingLeft(), dip2px(mContext, mSingleLineHeight) * (jjj + 1) - dip2px(mContext, 5), mPaintBottomLine);

    }

    //底部X轴

    canvas.drawLine(0, dip2px(mContext, mSingleLineHeight) * (jjj + 1), mViewWidth, dip2px(mContext, mSingleLineHeight) * (jjj + 1), mPaintBottomLine);

    }

    /**

    * 画文字

    *

    * @param canvas

    * @param pointList

    */

    private void drawText(Canvas canvas, List pointList) {

    for (int i = 0; i < pointList.size(); i++) {

    Point point = pointList.get(i);

    //画底部文字

    String text = (i + 1) + "";

    //获取文字宽度

    float textWidth = mPaintText.measureText(text, 0, text.length());

    float dx = point.x + getPaddingLeft() - textWidth / 2;

    Paint.FontMetricsInt fontMetricsInt = mPaintText.getFontMetricsInt();

    float dy = (fontMetricsInt.bottom - fontMetricsInt.top) / 2 - fontMetricsInt.bottom;

    float baseLine = dip2px(mContext, mSingleLineHeight) * mListAll.size() + dip2px(mContext, mBottomTextHeight / 2) + dy;

    canvas.drawText(text, dx, baseLine, mPaintText);

    }

    }

    @Override

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    /**

    * 这里根据数据有多少组来动态计算整个view的高度,然后重新设置尺寸

    */

    mViewHeight = dip2px(mContext, mSingleLineHeight) * mListAll.size() + dip2px(mContext, mBottomTextHeight);

    mViewWidth = MeasureSpec.getSize(widthMeasureSpec);

    setMeasuredDimension(mViewWidth, mViewHeight);

    }

    @Override

    public boolean onTouchEvent(MotionEvent event) {

    switch (event.getAction()) {

    case MotionEvent.ACTION_DOWN:

    case MotionEvent.ACTION_MOVE:

    getPointLine(event.getX());

    }

    return true;

    }

    private float mLineX = 0;

    private int position = 0;

    /**

    * 判断触摸的坐标距离哪个点最近

    *

    * @param mRawX

    */

    private void getPointLine(float mRawX) {

    if (mListAll == null || mListAll.size() == 0) {

    return;

    }

    float newLineX = 0;

    //触摸在折线区域

    if (mRawX <= mViewWidth - getPaddingRight() && mRawX >= getPaddingLeft()) {

    if (mListAll.get(0).size() == 1) {

    newLineX = getPaddingLeft();

    position = 0;

    } else {

    for (int i = 0; i < mListAll.get(0).size(); i++) {

    int xDiv = 0;

    if (mListAll.get(0).size() > 1) {

    xDiv = (mViewWidth - getPaddingLeft() - getPaddingRight()) / (mListAll.get(0).size() - 1);

    }

    float x1 = i * xDiv + getPaddingLeft();

    float x2 = (i + 1) * xDiv + getPaddingLeft();

    //判断触摸在两个点之间时,离谁更近一些

    if (mRawX > x1 && mRawX < x2) {

    float cneterX = x1 + (x2 - x1) / 2;

    if (mRawX > cneterX) {

    newLineX = x2;

    position = i + 1;

    if (position == mListAll.get(0).size()) {

    position = i;

    }

    } else {

    newLineX = x1;

    position = i;

    }

    break;

    }

    }

    }

    } else if (mRawX < getPaddingLeft()) {//触摸在折线左边

    newLineX = getPaddingLeft();

    position = 0;

    } else {//触摸在折线右边

    if (mListAll.get(0).size() == 1) {

    newLineX = getPaddingLeft();

    position = 0;

    } else {

    newLineX = mViewWidth - getPaddingRight();

    position = mListAll.get(0).size() - 1;

    }

    }

    /**

    * 这里判断如果跟上次的触摸结果一样,则不处理

    */

    if (mLineX == newLineX) {

    return;

    }

    mLineX = newLineX;

    notifyUI(mLineX);

    }

    /**

    * 选中某一组

    *

    * @param position

    */

    public void setPosition(int position) {

    try {

    this.position = position;

    int xDiv = (mViewWidth - getPaddingLeft() - getPaddingRight()) / (mListAll.get(0).size() - 1);

    mLineX = position * xDiv + getPaddingLeft();

    notifyUI(mLineX);

    } catch (Exception e) {

    e.printStackTrace();

    Log.i("MyChatView", "Exception:" + e);

    }

    }

    private void notifyUI(float mLineX) {

    this.mLineX = mLineX;

    if (onClickListener != null) {

    onClickListener.click(position);

    }

    invalidate();

    }

    private OnClickListener onClickListener;

    public void setOnClickListener(OnClickListener listener) {

    this.onClickListener = listener;

    }

    public interface OnClickListener {

    void click(int position);

    }

    public static int dip2px(Context context, float dpValue) {

    final float scale = context.getResources().getDisplayMetrics().density;

    return (int) (dpValue * scale + 0.5f);

    }

    public static int sp2px(Context context, float spValue) {

    final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;

    return (int) (spValue * fontScale + 0.5f);

    }

    private class MyComparator implements Comparator {

    public int compare(MyModel o1, MyModel o2) {

    return (o1.getVal() < o2.getVal() ? -1 : (o1.getVal() == o2.getVal() ? 0 : 1));

    }

    }

    }

    使用:

    public class MainActivity extends AppCompatActivity {

    private MyChatView view1;

    private TextView tv_text;

    private List> mListAll = new ArrayList<>();

    /**

    * 获取随机数

    *

    * @param range

    * @param startsfrom

    * @return

    */

    protected float getRandom(float range, float startsfrom) {

    return (float) (Math.random() * range) + startsfrom;

    }

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    view1 = (MyChatView) findViewById(R.id.view1);

    tv_text = (TextView) findViewById(R.id.tv_text);

    for (int i = 0; i < 3; i++) {

    List item = new ArrayList<>();

    for (int i1 = 0; i1 < 15; i1++) {

    item.add(new MyModel(i1, getRandom(1000, 500)));

    }

    mListAll.add(item);

    }

    view1.setData(mListAll);

    view1.setOnClickListener(new MyChatView.OnClickListener() {

    @Override

    public void click(int position) {

    update(position);

    }

    });

    findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

    /**

    * 设置默认选中第几组数据

    */

    view1.setPosition(new Random().nextInt(15));

    }

    });

    }

    private void update(int position) {

    tv_text.setText("");

    tv_text.append("第" + (position + 1) + "组:\n");

    for (int i = 0; i < mListAll.size(); i++) {

    tv_text.append("第" + i + "个数据:" + mListAll.get(i).get(position).getVal() + "\n");

    }

    }

    }

    GitHub传送门:源码

    展开全文
  • Excel折线图面积图模板-多层动态折线图
  • python画多行折线图

    2021-03-14 20:56:08
    利用pandas,读取csv文件中的特定列,绘制一条或多条折线图

    python画多行折线图
    利用pandas,读取csv文件中特定的列,绘制一条或者多条折线图

    # coding=utf-8
    # 输出数据曲线
    # ------------
    from pandas import read_csv
    from matplotlib import pyplot
    
    dataset = read_csv('E:/lianxi/huitu/low.csv', encoding='gbk', header=0 )
    values = dataset.values
    
    # 需要输出的列,创建一个数组,[0,1,2,3,4,5,6,7]
    #groups = [i for i in range(2)]
    #groups.remove(4)  # 删除数组中的值4,因为第四列是字符串,删除后的数组是[0,1,2,3,5,6,7]
    
    
    # 输出列曲线图
    pyplot.figure()
    #循环画出values的每一列数据
    
    
    x = range(len(values))
    pyplot.plot(x,values[:, 1], color="grey", linestyle="--",  label='morn1')
    pyplot.plot(x, values[:, 3], color="red", linestyle="-", label='morn2')
    pyplot.plot(x,values[:, 5], color="blue", linestyle="-",  label='morn3')
    pyplot.plot(x, values[:, 7], color="green", linestyle="-", label='morn4')
    pyplot.plot(x,values[:, 9], color="black", linestyle="-",  label='morn5')
    
    pyplot.legend()
    pyplot.show()
    

    展开全文
  • 实现效果: 1. 需要多少层类目,就写几层xAxis,offset控制标签位置,length控制分割线长度; 2. series数组添加最底层图表数据; 3. 获取option并赋值;... text: "昨日各省市运行车辆数&am...

    实现效果:

    1. 需要多少层类目,就写几层xAxis,offset控制标签位置,length控制分割线长度;

    2. series数组添加最底层图表数据;

    3. 获取option并赋值;

    上代码:

    var option = {
            title: {
                show: false,
                text: "昨日各省市运行车辆数&&累计运营里程(按车辆类型分布)"
            },
            tooltip: {
                trigger: 'axis',
                axisPointer: {
                    type: 'shadow'
                }
            },
            grid: {
                x: 60,
                y: 40,
                x2: 60,
                y2: 90
            },
            xAxis: [
                {
                    type: 'category',
                    data: ["黑龙江省", "青海省", "陕西省"],
                    axisPointer: {
                        type: 'shadow'
                    },
                    position: 'bottom',
                    offset: 60,
                    axisTick: {
                        show: true,
                        length: 80,
                        lineStyle: {
                            type: 'dotted'
                        }
                    },
                    axisLine: {
                        show: false
                    },
                    axisLabel: {
                        rotate: 0,
                        textStyle: {
                            color: '#999',
                            fontSize: 12,
                        }
                    }
                },
                {
                    type: 'category',
                    data: ["20200312", "20200312", "20200312"],
                    axisPointer: {
                        type: 'shadow'
                    },
                    position: 'bottom',
                    offset: 40,
                    axisLine: {
                        show: false
                    },
                    axisTick: {
                        show: false
                    },
                    axisLabel: {
                        rotate: 0,
                        textStyle: {
                            color: '#999',
                            fontSize: 12,
                        }
                    }
                },
                {
                    type: 'category',
                    data: ["其他", "牵引车", "载货车", "专用车", "自卸车", "其他", "牵引车", "载货车", "专用车", "自卸车", "其他", "牵引车", "载货车", "专用车", "自卸车"],
                    position: 'bottom',
                    axisPointer: {
                        type: 'shadow'
                    },
                    axisLine: {
                        show: false
                    },
                    axisTick: {
                        show: false
                    },
                    axisLabel: {
                        rotate: 70,
                        textStyle: {
                            color: '#999',
                            fontSize: 10,
                        }
                    }
                }

            ],
            yAxis: [
                {
                    type: 'value',
                    //name: '累计里程',
                    axisTick: {
                        show: false
                    },
                    axisLine: {
                        show: false
                    },
                    axisLabel: {
                        formatter: '{value} km',
                        rotate: 0,
                        textStyle: {
                            color: '#999',
                            fontSize: 12,
                        },
                        formatter: function (value) {
                            var val = value;
                            if (val >= 10000 && val < 10000000) {
                                val = val / 10000 + "万";
                            } else if (val >= 10000000) {
                                val = val / 1000000 + "千万";
                            }
                            return val;
                        }
                    }
                },
                {
                    type: 'value',
                    //name: '车辆数',
                    axisTick: {
                        show: false
                    },
                    axisLine: {
                        show: false
                    },
                    axisLabel: {
                        rotate: 0,
                        textStyle: {
                            color: '#999',
                            fontSize: 12,
                        },
                        formatter: function (value) {
                            var val = value;
                            if (val >= 0 && val < 1000) {
                                val = val / 1000 + "千";
                            } else if (val >= 10000) {
                                val = val / 10000 + "万";
                            }
                            return val;
                        }
                    },
                }
            ],
            series: [
                {
                    name: '牵引车',
                    type: 'bar',
                    //barWidth: 14,
                    data: ["18451.4", "513.8", "28246.3"]
                },
                {
                    name: '载货车',
                    type: 'bar',
                    //barWidth: 14,
                    data: ["2774", "1656", "499"]
                },
                {
                    name: '专用车',
                    type: 'bar',
                    //barWidth: 14,
                    data: ["454", "161", "792"]
                },
                {
                    name: '自卸车',
                    type: 'bar',
                    //barWidth: 14,
                    data: ["73", "1632.4", "12383.3"]
                },
                {
                    name: '其他',
                    type: 'bar',
                    //barWidth: 14,
                    data: ["240.3", "144.2", "282.4"]
                },
                {
                    name: '车辆数',
                    type: 'line',
                    smooth: true,
                    xAxisIndex: 2,
                    yAxisIndex: 1,
                    data: [57,22,123,34,567,57,22,123,34,567,57,22,123,34,567]
                }
            ]
        };

    注意事项:

    1. 顶层各个区域类目数量必须一致,顺序可不一致;

    2. 指定xAxis和yAxis;

    3. 如果类目过多,将图表宽度调大,负责会导致类目乱掉;

    4. 动态添加数据,注意数据的顺序及数量;

    展开全文
  • MATLAB画出堆叠折线图

    千次阅读 2017-08-07 15:36:36
    用matlab画下面的,上下堆叠起来,共用一个横坐标轴 subplot(311), %plot(...); set(gca,'xlim',[0 1.2]); set(gca,'ylim',[0 4.8]); set(gca,'xticklabel',[]); set(gca,'box','on'); set(gca,'...


    用matlab画下面的图,上下堆叠起来,共用一个横坐标轴

    subplot(311),

    %plot(...);

    set(gca,'xlim',[0 1.2]);

    set(gca,'ylim',[0 4.8]);

    set(gca,'xticklabel',[]);

    set(gca,'box','on');

    set(gca,'position',[0.15 0.65 0.75 0.27]);


    subplot(312),

    %plot(...);

    set(gca,'xlim',[0 1.2]);

    set(gca,'ylim',[0.9 2.7]);

    set(gca,'xticklabel',[]);

    set(gca,'box','on');

    set(gca,'position',[0.15 0.38 0.75 0.27]);

    ylabel('\sigma_{T}');


    subplot(313),

    %plot(...);

    set(gca,'xlim',[0 1.2]);

    set(gca,'ylim',[1.1 2.1]);

    set(gca,'box','on');

    set(gca,'position',[0.15 0.11 0.75 0.27]);

    xlabel('eV/\Delta');


    让三个坐标有不同的y坐标,但x坐标相同,并连在一起。只是没有数据,所以画图语句plot缺省,换上需要的画图指令就可以。

    set(gca,'xlim',[0 1.2]); %坐标x轴范围
    set(gca,'ylim',[0 4.8]);%坐标y轴范围
    set(gca,'position',[0.15 0.65 0.75 0.27]);%整个坐标区域在fig窗口中的位置












    展开全文
  • Python可视化-折线图

    千次阅读 2018-04-24 15:29:27
    折线图可以表现随时间变化的连续数据变化的趋势。一、数据文件准备因为实例文件繁琐,所以为了方便举例,就自己拿随机数生成啦ヾ(๑╹◡╹)ノ"。二、导入模块包可参考Windows下安装Python、matplotlib包 及相关...
  • 其实这个堆积折线图在我们日常生活中最容易见到的哦,比如股市常见的走势图就是典型的堆积折线图哦,说一下它的官方定义吧, 堆积折线图就是通过绘制不同数据集的折线图生成的图表,是按照垂直方向上彼此堆叠且又不...
  • 安卓 使用开源AChartEngine图表库画折线图一、简述记--使用AChartEngine开源图表库绘制简单的折线图。AChartEngine是一个开源的Android图表库,可以用来画折线图、面积图、条形图、柱形图、组合图表等等。简单的折线...
  • //当页面大小变化→图标对应变化 } // 绘制折线图(曲线图) this.lineChart.setOption({ grid: { left: 23, top: 30, right: 22, bottom: 10, containLabel: true//false是依据坐标轴来对齐的,true是依据坐标轴上面...
  • pandas画图--饼图--折线图-叠加区域图

    千次阅读 2019-01-05 15:09:45
    饼图   折线图   叠加区域图(反应起伏趋势)    
  • 本期数据画柱状图,环比增减百分比画折线图。 重点:设置双轴显示为不同颜色,主Y轴与柱状图同一颜色;辅助Y轴与折线图同一颜色。X轴中文标签竖排显示,这个竖排可不是旋转90度的那种哦。 先看看效果图吧 代码: ...
  • 柱形图和折线图混合图上显示数值 var plotOptions = {  column: { dataLabels: { enabled: true, style: { color: '#D7DEE9' },y:20 } },  line: {  dataLabels: {  
  • 安卓 动态折线图

    千次阅读 2018-11-12 22:46:24
    安卓 动态折线图 一、简述  记--一个简单的动态折线图。数据为随机数。  例子打包:链接: https://pan.baidu.com/s/12IdD6eayEvRPeFvoymuCcg 提取码: 9vu7  二、效果   三、工程结构 四、源文件 ...
  • android 曲线可以左右拖动,上下拖动,手势触摸放大, 触摸缩小 如果需要更多的曲线请在我的资源里面下载 achartengine
  • 从数据库中取数据之后,首先要注意,在service.java层中就要...在js界面上取出名字,时间,数量的数组要用多层for循环来取,要保证数据的对应关系。这个名字在这个时间的数据。要用多层for循环,注意,如果不存在,...
  • 容器id 为main var myChart=document.getElementById("main") myChart.removeAttribute("_echarts_instance_"); // 移除容器上的 _echarts_instance 或者 myChart.dispose();
  • TensorFlow入门

    千次阅读 多人点赞 2019-04-23 10:09:29
    节点(Nodes)在中表示数学操作,中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,...
  • 未知 第 12 章 散点图和折线图 12.1 基础散点图 散点图 (scatter plot)可能是最实用的图形化工具之一。这种十分常见的图可以方便地用于研究两个变量之间的关联关系。进一步来说,其他许多类型的图无非是基础散点...
  • 选中数据后插入“折线图" S2.右击图表->选择数据 S3.编辑"水平(分类)轴标签" 编辑后水平轴标签如下: S4.“图例项(系列)”仅保留”销售额" 绘制完成后,我们可以看到横坐标轴的“多层分类标签"已被默认勾选...
  • 基于LSTM的股票预测模型_python实现_超详细

    万次阅读 多人点赞 2019-07-05 22:25:13
    RNN模型的结构如: 2、LSTM模型 长短期记忆模型(long-short term memory)是一种特殊的RNN模型,是为了解决反向传播过程中存在梯度消失和梯度爆炸现象,通过引入门(gate)机制,解决了RNN模型不具备的长记忆性...
  • 如何用python画多层网络--pymnet

    千次阅读 热门讨论 2017-10-26 11:32:49
    epidemic layer information layer tt tts yy DATA: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX(邻接矩阵) 画的比较粗糙,要好看还得继续调参数。但是总算是找到一个好用的工具了。希望对大家有用。。。 遇到问题及解决...
  • 1 ,多层板,默认图例 :折线图 代码 : sns.factorplot(x=“day”, y=“total_bill”, hue=“smoker”, data=tips) 结果 : 2 ,多层板 : 柱状图 代码 : sns.factorplot(x=“day”, y=“total_bill”, hue=...
  • print(df) #绘制叠加柱状 df.plot.bar(x=‘名字’,y=[‘2017’,‘2018’,‘2019’,‘2020’],stacked=True,title=‘2017-2020申请表’) #绘制水平叠加柱状 # df.plot.barh(x=‘名字’,y=[‘2017’,‘2018’,...
  • 通过上篇我们已经学会了折线图/柱形图/条形图/散点图/气泡图/面积图这六种常见图表的绘制,可以看看这篇博文 Python数据可视化之12种常用图表的绘制(一)——折线图/柱形图/条形图/散点图/气泡图/面积图 现在我们来...
  • 增加1,背景网格线增加虚线,2,折线只显示圆点 底部有重点代码 1,背景自定义虚线 gridData: FlGridData( show: true, checkToShowHorizontalLine: (double value) { return value == 1 || value == 3 || ...
  • 首先看一下效果,把2种数据,叠加展示。 下面我们来看一下代码是如何实现的。 1.首先我把实现堆叠柱状封装了MyBarChart。下面直接上代码。 代码里面直接把设置chart的一些属性配置好了。对外暴露了一个设置...
  • tensorflow学习笔记:识别中模糊的手写体数字(2)基于多层神经网络以及TensorBoard可视化 运行环境 tensorflow -gpu 1.11.0 python 3.6.9 import tensorflow as tf import os 读取MINIST数据集 from ...
  • 1、雷达图中想加入蜘蛛网类似的线,可先把图改成折线图,然后选中纵坐标轴,在填充与线条选项下将线条更改为实线,然后可设置颜色,然后再将图表更改成雷达图(效果如左图到右图); 2、雷达图中选择填充图,选中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,279
精华内容 511
关键字:

多层折线图