lecho / hellocharts-android Goto Github PK
View Code? Open in Web Editor NEWCharts library for Android compatible with API 8+, several chart types with scaling, scrolling and animations 📊
License: Apache License 2.0
Charts library for Android compatible with API 8+, several chart types with scaling, scrolling and animations 📊
License: Apache License 2.0
Hello, first of all thank you for your work, it is very nice.
but I have a question, is there any way I can change the style(size,color...) of the shape and the Label and the size of the text in the Label? Sometimes they look too big for me.
Hi, after deeply searching in this lib, I see you do not support for setting these values yet.
For example, I have a bunch of data of temperature of few months, and I want to draw a chart with step in Y axis is 5 degree, and step in X axis is each 7 days, what I want is the gridline always point to that step value.
I see some others chart lib have this feature, but I love this library (the style, animation, setup). Could you please add this in next release ?
Thanks.
I want to show a set of dates in the X Axis that can adjust the visible range (show/hide) based on zoom level (like the integers when setAutoGenerated(true) is set). How can I do it?
Some of us can face this error:
THE ERROR IS:
Library projects cannot set applicationId. applicationId is set to 'lecho.lib.hellocharts' in default config
So on stackoverflow the solution was to comment this line:
"applicationId 'lecho.lib.hellocharts'" on build.gradle file.
But then this second error appears:
A problem occurred configuring project ':hellocharts-library'. Exception thrown while executing model rule: org.gradle.api.publish.plugins.PublishingPlugin$Rules#addConfiguredPublicationsToProjectPublicationRegistry(org.gradle.api.internal.artifacts.ivyservice.projectmodule.ProjectPublicationRegistry, org.gradle.api.publish.PublishingExtension, org.gradle.api.internal.project.ProjectIdentifier) java.lang.NullPointerException (no error message)
So the only working solution till now is to comment all this on the build.gradle file
/*
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName '1.0'
applicationId 'lecho.lib.hellocharts'
}
*/
// To publish to maven local execute "gradle clean build publishToMavenLocal"
// To publish to nexus execute "gradle clean build publish"
/*
android.libraryVariants
publishing {
publications {
maven(MavenPublication) {
artifact "${project.buildDir}/outputs/aar/${project.name}.aar"
artifactId project.name
groupId android.defaultConfig.applicationId
version android.defaultConfig.versionName
artifact androidSourcesJar {
classifier "sources"
}
}
}
repositories {
maven {
credentials {
username 'nexusUser'
password 'nexusPass'
}
url "http://your-nexus-url/
}
}
}
*/
Like this it's seems to work, but i don't think it's the best solution, maybe you can check it out!
I have a need to have the y of the chart as a date, more specifically day of month, which can start on any day of the month, eg 10th, having more than 1 period to compare against.
At the moment, if I load the data starting at the 10th, it will go from 10th to the 9th of next month, but the data becomes sorted so it wont display properly, becoming 1 to 30/31..
I will if time permits try to fix this myself.
good work though, charts look nice and are easy to use.
Hi, I have tried on a few different chart types (line, column and comboLineColumn) but the onNothingTouched listener does not appear to be firing.
Cheers
Hello,
I'm french, so sorry for my bad english...
I'm an Android developer and, in my app, i recently add hellocharts to replace another old chart library.
It's a very beautiful lib, and i congratulate developers :-)
But I've a problem since i imported this solution in my fragments of an activity...
Now i often have Out Of Memory Errors that make my app crash.
When i see the error log I see each time :
" java.lang.OutOfMemoryError
at android.graphics.Bitmap.nativeCreate(Native Method)
...
at lecho.lib.hellocharts.renderer.LineChartRenderer.initDataMeasuremetns(LineChartRenderer.java:93)"
and i don't know what to do in my onStop() or onDestroy() functions to make it disappear...
I tried to use chart.destroyDrawingCache() function but it seems to be useless....
Could you help me please?
Thank you very much!
Regards.
First off, this library is great! Keep up the good work!
This is not really an issue, but more of an enhancement. I have an application that is dynamically adding points to a PointValue list at runtime. There are instances where duplicate points can be added, so I was trying to use a HashSet which should eliminate duplicates... but since PointValue doesn't override hashcode() and equals() it can't tell if there are duplicate or not.
http://javarevisited.blogspot.ca/2011/10/override-hashcode-in-java-example.html
Perhaps I am just not understanding but how do AxisValue Labels work, I would have assumed it places that text at that point on the axis. Is this not the case (or am I just missing something silly here)
Hi, I may be missing a trick but is it possible to set the AxisYLeft max value manually. I am able to set the base value but not the maximum.
Cheers
Scroll from code can be achieved using Chart.setCurrentViewport()
method but separated method for that functionality could be more convenient.
How can we set Legend in hellocharts for Line and bar combined?
thanks for the help. the viewport thing help me to show more of the graph.
But my 1st problem was that i was not able to see the value of the graph
//values of the axeY
List<AxisValue> axisValuesForY = new ArrayList<AxisValue>();
for (int i = 1; i < 100; i +=10){
axisValuesForX.add(new AxisValue(i));
}
Axis axeX = new Axis(axisValuesForX);
Axis axeY = new Axis(axisValuesForY);
data.setAxisXBottom(axeX);
data.setAxisYLeft(axeY);
i've done this and nothing show's up on the axeY neither for X.
Plus i've put this.
axeX.setName("Days");
axeY.setName("amount");
and only day is displayed
Is there any way I can set margins for line data so lines don't get clipped when they are at edges having max or min values? For example, by setting a %5 margin, graphs highest value becomes %5 higher than the highest value among line data values, and chart lowest becomes %5 less of lowest value in list.
Or if I can disable clipping that would be better.
Thanks.
I don't know if this already exists, or if this should be part of the charts, but I thought I'd suggest these anyway in case it makes sense:
chart.setTitle
Line.setName
.Anyway, thanks for all the work on this chart, it's very nice and easy to use. The structure of the charts has been well thought out.
Internet says that it is DrawerLayout internal error, but it can be repaired by using workaround class.
See more Baseflow/PhotoView#72
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
at android.support.v4.widget.ViewDragHelper.shouldInterceptTouchEvent(ViewDragHelper.java:1011)
at android.support.v4.widget.DrawerLayout.onInterceptTouchEvent(DrawerLayout.java:1108)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2055)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2423)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2156)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2279)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1606)
at android.app.Activity.dispatchTouchEvent(Activity.java:2565)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2227)
at android.view.View.dispatchPointerEvent(View.java:8340)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4743)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4609)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4167)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4221)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4190)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4301)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4198)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4358)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4167)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4221)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4190)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4198)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4167)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6517)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6434)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6405)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6370)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6597)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:176)
at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:6570)
at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:6616)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803)
at android.view.Choreographer.doCallbacks(Choreographer.java:603)
at android.view.Choreographer.doFrame(Choreographer.java:571)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:789)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5586)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
Is it possible to add text labels (not value labels) to Pie Charts?
Like for example:
Students 70%
Teachers 20%
Admin 10%
So I want the texts of "Students, ..." appear on the pie (or on press).
Currently tap on center also fires events. Would it be possible to disable this?
Hello again,
First of all, thanks for the great library and happy new year!
I experienced an out of memory problem in my app. I have two activities which have line charts and bar charts in them. Let's say they are activity A and B.
When I switch between them a lot of time, the amount of memory consumed increased a lot. When I switch back and forth between them at certain amount of time, the app crashed because of out of memory error.
Do you have any tip on solving this problem?
Thanks!
I thought of creating an option for the label is printed in 45º, or the user's choice. As you can see in the picture, the data may be confusing in some cases. What do you think?
Something like this:
AxesRenderer.java
private void drawAxisHorizontalLabels(Canvas canvas, Axis axis, int position) {
final Rect contentRectMargins = chart.getChartComputator().getContentRectWithMargins();
for (int valueToDrawIndex = 0; valueToDrawIndex < axisValuesToDrawNumTab[position]; ++valueToDrawIndex) {
int charsNumber = 0;
if (axis.isAutoGenerated()) {
final float value = axisAutoValuesToDrawTab[position][valueToDrawIndex];
charsNumber = axis.getFormatter().formatValueForAutoGeneratedAxis(labelBuffer, value,
axisAutoValuesBufferTab[position].decimals);
} else {
AxisValue axisValue = axisValuesToDrawTab[position][valueToDrawIndex];
charsNumber = axis.getFormatter().formatValueForManualAxis(labelBuffer, axisValue);
}
canvas.save(); // here
canvas.rotate(degrees ,axisRawValuesTab[position][valueToDrawIndex], axisFixedCoordinateTab[position]); // here
canvas.drawText(labelBuffer, labelBuffer.length - charsNumber, charsNumber,
axisRawValuesTab[position][valueToDrawIndex], axisFixedCoordinateTab[position],
textPaintTab[position]);
canvas.restore(); // here
}
// Drawing axis name
if (!TextUtils.isEmpty(axis.getName())) {
textPaintTab[position].setTextAlign(Align.CENTER);
canvas.drawText(axis.getName(), contentRectMargins.centerX(), axisNameBaselineTab[position],
textPaintTab[position]);
}
}
Hi,Sometimes my PointValue is the same, at this time the LineChart will appear problem, it does not display anything.like no data...
Hi,
Thanks for the great library!
I have a little problem.
When my values are 0( for example, three straight (1,0) (2,0) (3,0) points), the line goes under the chart and not visible. Same thing happened with three straight max value (in my case it's a percentage chart) so if I have three points like this:
(1,100), (2,100), (3,100)
The line goes above the chart and not visible.
I wonder if there is a fix for this or can I set the line to be straight (instead of curve) so all parts of it will be visible in the chart?
Thanks a lot!
Sorry, I found the solution for straight line (set cubic to false)
However, the problem with the line goes outside the chart stills there.
i want to display 40 points,and the xLabel name is country name。
Is there any plan to smoothly render huge datasets as http://dygraphs.com/ does?
Hi,
Is there anyway for us to know how many points are showing on screen and its value ?
Thanks.
i like PreviewColumnChartView,want to show 50 points,and every column has x label i.e. label1,label2.....label50.but the words overlapped(i changed code in AxesRenderer.java prepareAxisHorizontalCustom to do not hide labels)
i set column chart width=1400dp; words not overlapped but it only show the front 30 columns,can not show others. i find the bigger i set the width,the less points can show
i try to use setContentArea or chart.setMaximumViewport, its can not show all points too.
what can i do?
thanks
When we set the parameter "axis.setAutoGenerated(true)", the "AxesRenderer" does not respect the set amount of digits within the "SimpleValueFormatter". Even if I set the SimpleValueFormatter to 3 digits, continues to write 2 digits.
My code
private final SimpleValueFormatter simpleValueFormatter = new SimpleValueFormatter(3);
...
columnData.setAxisYLeft(new Axis().setMaxLabelChars(6).setAutoGenerated(true).setHasLines(true).setName("Produtividade (ha/h)").setTextSize(TEXT_SIZE).setTextColor(TEXT_COLOR).setFormatter(simpleValueFormatter));
...
AxesRenderer.java
private void drawAxisVerticalLabels(Canvas canvas, Axis axis, int position) {
final Rect contentRectMargins = chart.getChartComputator().getContentRectWithMargins();
int stopsToDrawIndex = 0;
for (; stopsToDrawIndex < axisValuesToDrawNumTab[position]; ++stopsToDrawIndex) {
final int numChars;
if (axis.isAutoGenerated()) { /
valuesBuff[0] = axisAutoValuesToDrawTab[position][stopsToDrawIndex];
// here is the problem
numChars = axis.getFormatter().formatAutoValue(labelBuffer, valuesBuff,
axisAutoValuesBufferTab[position].decimals);
} else {
valuesBuff[0] = axisValuesToDrawTab[position][stopsToDrawIndex].getValue();
numChars = axis.getFormatter().formatValue(labelBuffer, valuesBuff,
axisValuesToDrawTab[position][stopsToDrawIndex].getLabel());
}
canvas.drawText(labelBuffer, labelBuffer.length - numChars, numChars, axisFixedCoordinateTab[position],
axisRawValuesTab[position][stopsToDrawIndex], textPaintTab[position]);
}
// drawing axis name
if (!TextUtils.isEmpty(axis.getName())) {
textPaintTab[position].setTextAlign(Align.CENTER);
canvas.save();
canvas.rotate(-90, contentRectMargins.centerY(), contentRectMargins.centerY());
canvas.drawText(axis.getName(), contentRectMargins.centerY(), axisNameBaselineTab[position],
textPaintTab[position]);
canvas.restore();
}
}
This is a bug? Can I fix it?
PieChartView supports only one label type at the time, inside or outside. To add option to
display labels inside and outside at the same time.
I'm trying to show all step in axis Y even if it enver reach them like in the sample, and somewhy it doesn't work. How do I do that?
Axis axisY = Axis.generateAxisFromRange(50,100,5).setAutoGenerated(false).setHasLines(true).setTextColor(Color.WHITE);
I have a ComboLineColumnChart. The line is filled, which is on top of the columns. Is is possible to control the order and so bring the columns to the front?
Hello, lecho! I really like your library. It is very easy to use. But I have difficulties in its customization. How can I change the values on the x-axis? I want the graph to have names of the months as well as you have in the picture
I got to build the library. And the X-axis indicates the number of points:
You can't use applicationId in library project ( hellocharts-library )
Is it possible to have the method to set chart data model for the Column chart??
Can I set string labels for axis such as:Sunday, Monday, ... currently the axis can only display integer appended/prepended with string
Is there possibility to create multiline label of axis?
I guess current implementation doesn't allow that because of usage Canvas.drawText()
in AxesRenderer
which ignore "\n". Do you have any idea how to fix this?
Hi,
I'm trying to put this:
compile 'lecho.lib.hellocharts:hellocharts-library:1.1@aar'
compile 'com.android.support:support-v4:21.0.+'
On the build.gradle in Android Studio and it gives me this error:
Error:A problem occurred configuring project ':app'.
Could not resolve all dependencies for configuration ':app:_debugCompile'.
Could not find lecho.lib.hellocharts:hellocharts-library:1.1.
Searched in the following locations:
https://jcenter.bintray.com/lecho/lib/hellocharts/hellocharts-library/1.1/hellocharts-library-1.1.pom
https://jcenter.bintray.com/lecho/lib/hellocharts/hellocharts-library/1.1/hellocharts-library-1.1.aar
file:/C:/android-sdk/extras/android/m2repository/lecho/lib/hellocharts/hellocharts-library/1.1/hellocharts-library-1.1.pom
file:/C:/android-sdk/extras/android/m2repository/lecho/lib/hellocharts/hellocharts-library/1.1/hellocharts-library-1.1.aar
file:/C:/android-sdk/extras/google/m2repository/lecho/lib/hellocharts/hellocharts-library/1.1/hellocharts-library-1.1.pom
file:/C:/android-sdk/extras/google/m2repository/lecho/lib/hellocharts/hellocharts-library/1.1/hellocharts-library-1.1.aar
Any idea why this is appening?
Thanks
Hi,
At first, thank you for the great library.
I am trying to implement a columnchart by following the sample app. While using the SimpleAxisValueFormatter to give value to column names at bottom axis, the class is not recognized by Android Studio. Is it deprecated or what?
The codes i am following : https://github.com/lecho/hellocharts-android/blob/master/hellocharts-samples/src/lecho/lib/hellocharts/samples/TempoChartActivity.java#L116
Also "lecho.lib.hellocharts.util.ChartUtils" is not recognized.
https://github.com/lecho/hellocharts-android/blob/master/hellocharts-samples/src/lecho/lib/hellocharts/samples/ColumnChartActivity.java#L172
It is possible to zoom chart in X or Y direction on base of gesture direction? Eg. gesture on X direction zooms chart in X direction and gesture on Y direction zooms chart in Y direction.
Hi i recently get a new exception :
at lecho.lib.hellocharts.renderer.AxesRenderer.prepareAxisHorizontalCustom(AxesRenderer.java:377)
at lecho.lib.hellocharts.renderer.AxesRenderer.prepareAxis(AxesRenderer.java:334)
at lecho.lib.hellocharts.renderer.AxesRenderer.drawInBackground(AxesRenderer.java:148)
at lecho.lib.hellocharts.view.AbstractChartView.onDraw(AbstractChartView.java:87)
Thanks.
Hello, I was wondering if there was a way to programmatically "touch" points, so the point would show up as if one touched it. I would like to use a seek bar with the graph. I was trying a motion event to trigger the touch. Would that be the way to go?
Cheers.
goodmorning,
i'm using your library but i have some problem with multiple lines.
it's possible to create two different lines using differents axis without using scale and range?
i use that code:
ArrayList axisValues = new ArrayList();
for (float i = 0; i < maxTime; i += 1000) {
axisValues.add(new AxisValue(i, moreWorkouts
.formatMinutes((long) i)));
}
Axis tempoAxis = new Axis(axisValues)
.setMaxLabelChars(5)
.setTextColor(Color.RED)
.setHasSeparationLine(false)
.setFormatter(
new HeightValueFormater(scale, sub, 1, null, null));
where formatMinutes create char in format hh:mm.
By this the formatter look not work and the value of axis result not scaled.
sorry for my english.
thanks a lot.
nicholas
Hi, I've been using hellocharts library and it's great!
There is only one thing that I couldn't accomplish yet, is there any way to set up automatic zoom?
I need to show a lot of data including the values, by default it shows everything packed, so the user needs to zoom it manually:
is there any way to do this programatically? so by default is zooms the data showing only a couple of columns?
and then the user just scrolls?
I'm looking at the ChartZoomer class but it's tight to gestures.
Thanks!
Sure it is possible but any guidance would be great on how to use this lib to create a log-normal scatter plot. Thanks!
Hi,lecho.
The library is very cool!Thanks for your work.
But now,I have a problem When I create a LineChart,as the charts shows below.
why my shaded area is larger than the range from hello1 to hello4 on the x axis? How can it be corresponded with the exact range from hello1 to 4?
This is my code fragment:
chart = (LineChartView) mRootView.findViewById(R.id.chart1);
chart.setOnValueTouchListener(new ValueTouchListener());
chart.setViewportCalculationEnabled(false);
Viewport v = new Viewport(0, 8, 6, 0);
chart.setMaximumViewport(v);
chart.setCurrentViewport(v);
data = new LineChartData();
List<PointValue> values = new ArrayList<PointValue>();
values.add(new PointValue(1, 1));
values.add(new PointValue(2, 2));
values.add(new PointValue(3, 3));
values.add(new PointValue(4, 4));
Line line = new Line(values);
line.setShape(shape);
line.setCubic(isCubic);
line.setFilled(isFilled);
line.setHasLabels(hasLabels);
line.setHasLabelsOnlyForSelected(hasLabelForSelected);
line.setHasLines(hasLines);
line.setHasPoints(hasPoints);
List<Line> lines = new ArrayList<Line>(1);
lines.add(line);
data.setLines(lines);
if (hasAxes) {
List<AxisValue> as = new ArrayList<AxisValue>();
for(int i=1; i<=4; i++){
as.add(new AxisValue(i, ("hello"+i).toCharArray()));
}
Axis axisX = new Axis(as);
Axis axisY = new Axis();
if (hasAxesNames) {
axisX.setName("Axis X");
axisY.setName("Axis Y");
}
data.setAxisXBottom(axisX);
data.setAxisYLeft(axisY);
} else {
data.setAxisXBottom(null);
data.setAxisYLeft(null);
}
chart.setLineChartData(data);
Thank you and happy new year :)
I want to preface this by saying I'm pretty unfamiliar with Java build systems in general, Gradle included. I suspect if that weren't the case I could give you a pull request with a solution instead of just a problem.
In any case, attempting to publish to the local maven repository as described in the readme doesn't work. Running "gradle clean build publishToMavenLocal" produces an error message like this:
Execution failed for task ':hellocharts-library:publishMavenPublicationToMavenLocal'.
> Failed to publish publication 'maven' to repository 'MavenLocal'
> Invalid publication 'maven': artifact file does not exist: <containing dir>/hellocharts-android/hellocharts-library/build/outputs/aar/hellocharts-library.aar'
The issue seems to be that the build step spits out "hellocharts-library-debug.aar" and "hellocharts-library-release.aar". I ran the clean and build steps, copied the release library into a new file named "hellocharts-library.aar" and then ran the publishToMavenLocal step last and everything worked fine. It seems like it's just a naming issue in some Gradle config file, but it's potentially discouraging to new users.
Maybe a wiki with the method you've created and what we can use them for could be a good idea. Like a small wiki ok a pdf file. It could be usefull.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.