你需要下载导入JFREECHART的jar包
然后下面是一个例子
import orgjfreechartChartFactory;
import orgjfreechartChartPanel;
import orgjfreechartJFreeChart;
import orgjfreechartplotPlotOrientation;
import orgjfreedataxyXYSeries;
import orgjfreedataxyXYSeriesCollection;
import orgjfreeuiApplicationFrame;
import orgjfreeuiRefineryUtilities;
public class XYSeriesDemo extends ApplicationFrame {
/
A demonstration application showing an XY series containing a null value
@param title the frame title
/
public XYSeriesDemo(final String title) {
super(title);
final XYSeries series = new XYSeries("Random Data");
seriesadd(10, 5002);
seriesadd(50, 6941);
seriesadd(40, 1000);
seriesadd(125, 7344);
seriesadd(173, 4532);
seriesadd(212, 5002);
seriesadd(219, null);
seriesadd(256, 7344);
seriesadd(300, 4532);
final XYSeriesCollection data = new XYSeriesCollection(series);
final JFreeChart chart = ChartFactorycreateXYLineChart(
"XY Series Demo",
"X",
"Y",
data,
PlotOrientationVERTICAL,
true,
true,
false
);
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanelsetPreferredSize(new javaawtDimension(500, 270));
setContentPane(chartPanel);
}
public static void main(final String[] args) {
final XYSeriesDemo demo = new XYSeriesDemo("XY Series Demo");
demopack();
RefineryUtilitiescenterFrameOnScreen(demo);
demosetVisible(true);
}
}
seriesadd(10, 5002);10,5002分别是横坐标和纵坐标数值 它会自动产生横竖坐标的
QChart 是 Qt 框架中的图表绘制类,它提供了丰富的图表类型和交互功能。在实时数据处理场景中,我们通常需要使用 QChart 来绘制实时数据的曲线图或柱状图等。但是,由于实时数据的特性,数据会不断地产生变化,需要不断地更新图表。这就需要使用 QChart 提供的时时刷新机制。
QChart 提供了两种时时刷新机制:基于定时器的刷新和基于信号槽的刷新。基于定时器的刷新是指通过设置定时器,定时地更新图表数据。这种方式对于数据量较小的情况下比较适用,但是对于大量数据的情况下,会导致程序的卡顿和性能瓶颈。而基于信号槽的刷新则是指数据产生变化时,通过信号槽机制实时地更新图表数据。这种方式相对于定时器的方式,性能更好,更适用于大量数据的情况。
需要注意的是,无论使用哪种刷新机制,都需要在程序中进行适当的优化,以提高程序的性能。例如,我们可以使用多线程技术来处理数据,并且将数据处理和图表绘制分离,使得程序更加高效和稳定。
查询有关资料可以知道,利用 QtChart 模块可以很容易的在程序中画出各种漂亮的图表 这些漂亮的图表除了在界面上显示之外, 还经常需要保存为,以便后续使用 这篇博客就来讲讲如何将 Chart 保存到中
其实这是个小问题, 只需要两三行代码 但是 QChartView 这个类没有提供这么个函数 所以要实现这么个小功能还真要考验大家对 Qt 的掌握水平了
我才用的方法是使用 QScreen 的:
QPixmap QScreen::grabWindow(WId window, int x = 0, int y = 0, int width = -1, int height = -
这个方法 用这个方法,只要有 WId ,那么什么窗口的图像都可以获取
QChartView 继承自 QWidget, 用 winId() 函数就可以获得 WId
下面是个最简单的代码片段, 描述了如何将一个QChartView 的图像保存到 chartpng 文件中:
QScreen screen = QGuiApplication::primaryScreen();
QPixmap p = screen->grabWindow(view->winId());
QImage image = ptoImage();
imagesave("chartpng");
aspx页面代码
<asp:Chart ID="Chart1" runat="server" Width="1000px" Height="450px" >
<Series>
<asp:Series Name="Series1" YValuesPerPoint="2" IsValueShownAsLabel="True" BackImageTransparentColor="224, 224, 224"
BorderColor="Transparent" Palette="Pastel" Label="#VALY人次">
</asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea Name="ChartArea1" BackColor="Transparent">
<AxisY Enabled="True" LineColor="Transparent">
<MajorGrid Enabled="True" LineColor="Silver" />
<MajorGrid LineColor="Silver"></MajorGrid>
<MajorTickMark Enabled="False" />
</AxisY>
<AxisX Interval="1" LogarithmBase="99" IsLabelAutoFit="False" LineColor="Transparent">
<MajorGrid Enabled="False" />
<MajorTickMark Enabled="False" />
<LabelStyle TruncatedLabels="False" />
<MajorGrid Enabled="False"></MajorGrid>
<MajorTickMark Enabled="False"></MajorTickMark>
</AxisX>
<Position Height="97" Width="100" Y="3" />
<Area3DStyle Enable3D="True" IsRightAngleAxes="False" Inclination="10" PointDepth="100"
Rotation="10" />
<Position Y="3" Width="100" Height="97"></Position>
<Area3DStyle Enable3D="True" IsRightAngleAxes="False" Inclination="10" Rotation="10">
</Area3DStyle>
</asp:ChartArea>
</ChartAreas>
</asp:Chart>
aspxcs页面代码
Chart1Series[0]PointsDataBindXY(查询出来的数据集, "x轴显示的内容(注意必须是在查询出来的数据集中的列明)", 查询出来的数据集, “y轴显示的内容(注意必须是在查询出来的数据集中的列明)");
Chart1Series[0]ToolTip = "鼠标移动上去显示的内容";
以上的代码是我从一个项目中复制出来的一部分上面的图形是默认柱图,如果楼主需要波浪形的图可以设置Series中的CharType属性,这个属性就是改变图形。其实Char这个控件属性很多,主要分四个地方设置(图例,图标区、序列、图表标题)里面属性很多可以一个一个自己试下,或者找微软提供的实例文档看看。
[cpp] view plaincopyprint
/
折线图绘制
author 周翔
2012-8-14
对外提供接口
void showData(int data);接受外部的折线数据
void setSingleUnitX(const int &value);设置x轴的单位像素
void startUpdataTimer(int msecond);定时器更新折线图
void stopUpdataTimer();关闭定时器
/
#ifndef LINEGRAPHWIDGET_H
#define LINEGRAPHWIDGET_H
#include <QWidget>
#include <QPen>
#include <QPainter>
#include <QResizeEvent>
//#include <QDebug>
#include <QTimer>
struct point
{
int x;
int y;
};
class LineGraphWidget : public QWidget
{
Q_OBJECT
public:
//mix和max为折线的y轴的数据范围
explicit LineGraphWidget(int min, int max, QWidget parent = 0);
void setSingleUnitX(const int &value) {singleUnitX = value;}//设置x轴的一个单位占多少个像素,默认10
//支持定时器定时更新
void startUpdataTimer(int msecond);
void stopUpdataTimer();
signals:
//支持实时更新
void newDataCome();//有新数据到来时发出的折线图更新信号
public slots:
/
@brief showData
@param adress 地址
@param _data 数据
/
void showData(const QString& adress,int _data);//接受来之外部的数据
/
@brief slt_showData 接受外部数据
@param name 设备名
@param _data 数据
/
void slt_showData(ushort name,int _data);
protected:
void paintEvent(QPaintEvent );
void resizeEvent(QResizeEvent e);
private:
QString m_currentNodeAdress;//当前显示的节点的地址
ushort m_currentNodeName;//当前节点的设备名
QList<int> xList;
QList<int> yList;
int Counter;
//窗口的长和宽
int widgetX;
int widgetY;
//折线图的显示范围
int rangeMin;
int rangeMax;
//根据窗口和范围得出的单位长,x轴,y轴
int singleUnitX;
int singleUnitY;
//根据窗口得出的多少个单位,x轴,y轴
int sumUnitX;
int sumUnitY;
point basePoint;//折线图的原点
point xAxisEndPoint;//X轴的终点
point yAxisEndPoint;//Y轴的终点
QTimer timer;
void getSumUnitX();
void getSingleUnitY();
void initGraph();
void flush();//数据传入的节点不是现在的当前的节点的时候,刷新画面,清除所有的值
};
C# code var myChart = new Chart(ctx)Pie(data, options) var legend = myChartgenerateLegend(); legend 里就是模板生成的HTML代码,可以设置为某个元素的innerHTML然后就显示出来了
以上就是关于Java如何调用数据库中的数据画图全部的内容,包括:Java如何调用数据库中的数据画图、qchart时时刷新大量数据、qchart保存等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)