怎么读取mysql库绘制柱状图_怎样用柱状图实现mysql数据库中的数据,现在我不知道怎么将数据库中的数据读取出来显示在柱状图上...

怎样用柱状图实现mysql数据库中的数据,现在我不知道怎么将数据库中的数据读取出来显示在柱状图上

关注:127  答案:3  mip版

解决时间 2021-01-24 11:35

e6cb1a03ad541b3098697807b7bf1798.png

提问者逍遥风

2021-01-23 18:56

请大家帮帮忙把 谢谢了

我是用jfreechart做的 就是将数据库中的数据取出来显示在柱状图上 应该怎么做 ?

最佳答案

e6cb1a03ad541b3098697807b7bf1798.png

二级知识专家自然卷的气质

2021-01-23 20:14

public class CategoryItemChart {

public static String generateBarChart(HttpSession session, PrintWriter pw,int w, int h,ArrayList list) {

String filename = null;

try {

CategoryDataset dataset = createDataset(list);

JFreeChart chart = ChartFactory.createBarChart(

"",//图表标题

"",//X轴标题

"",//Y轴标题

dataset,//数据集合

PlotOrientation.VERTICAL,//图表显示方向(水平、垂直)

true,//是否使用图例

true,//是否使用工具提示

false//是否为图表增加URL

);

chart.setBackgroundPaint(Color.white); // 1,设置整个图表背景颜色

CategoryPlot plot = chart.getCategoryPlot();

plot.setBackgroundPaint(Color.white); // 2,设置详细图表的显示细节部分的背景颜色

plot.setDomainGridlinePaint(Color.black); // 3,设置垂直网格线颜色

plot.setDomainGridlinesVisible(false); // 4,设置是否显示垂直网格线

plot.setRangeGridlinePaint(Color.yellow); // 5,设置水平网格线颜色

plot.setRangeGridlinesVisible(false); //6,设置是否显示水平网格线

final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();

rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

CategoryItemRenderer renderer = (CategoryItemRenderer) plot.getRenderer();

BarRenderer render = (BarRenderer) plot.getRenderer();

// render.setItemMargin(0.0);

// render.setMinimumBarLength(0.0);

GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, new Color(255,200, 80), 0.0f, 0.0f, new Color(255, 255, 40));

GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, new Color(50,255, 50), 0.0f, 0.0f, new Color(100, 255, 100));

GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 0.0f,0.0f, new Color(255, 100, 100));

GradientPaint gp3 = new GradientPaint(0.0f, 0.0f, new Color(108,108, 255), 0.0f, 0.0f, new Color(150, 150, 200));

renderer.setSeriesPaint(0, gp0);

renderer.setSeriesPaint(1, gp1);

renderer.setSeriesPaint(2, gp2);

renderer.setSeriesPaint(3, gp3);

CategoryAxis domainAxis = plot.getDomainAxis();

domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.E / 6.0));

domainAxis.setLowerMargin(0.06);

domainAxis.setUpperMargin(0.06);

ValueAxis rAxis = plot.getRangeAxis();

rAxis.setUpperMargin(0.3);

rAxis.setLowerMargin(0.3);

render.setItemMargin(0.01);

chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);

TextTitle textTitle = chart.getTitle();

textTitle.setFont(new Font("黑体", Font.PLAIN, 20));

domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));

domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));

rAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 14));

rAxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));

renderer.setBaseItemLabelFont(new Font("宋体", Font.PLAIN, 12));

renderer.setBaseItemLabelGenerator(new LabelGenerator(0.0));

renderer.setBaseItemLabelsVisible(true);

ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());

filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,session);

ChartUtilities.writeImageMap(pw, filename, info, true);

pw.flush();

} catch (Exception e) {

System.out.println("Exception - " + e.toString());

e.printStackTrace(System.out);

filename = "public_error_500x300.png";

}

return filename;

}

static class LabelGenerator implements CategoryItemLabelGenerator {

private double threshold;

public LabelGenerator(double threshold) {

this.threshold = threshold;

}

public String generateLabel(CategoryDataset dataset, int row, int column) {

String result = null;

final Number value = dataset.getValue(row, column);

if (value != null) {

final double v = value.doubleValue();

if (v > this.threshold) {

result = value.toString();

}

}

return result;

}

public String generateRowLabel(CategoryDataset dataset, int row) {

return null;

}

public String generateColumnLabel(CategoryDataset dataset, int column) {

return null;

}

}

private static CategoryDataset createDataset(ArrayList list) {

String s1 = "1";

String s2 = "2";

String c1 = "1";

String c2 = "2";

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.setValue(44, s1, c1);

dataset.setValue(48, s2, c2);

return dataset;

}

}

比较完整的一个得到柱图的代码,保存路径是临时文件,怎么从数据库取值应该会吧。把dataset处理一下就可以了。

全部回答

e6cb1a03ad541b3098697807b7bf1798.png

1楼臸釪樶初

2021-01-23 23:03

1.先用php算出数据在数据库中占的比例,

2.然后把这个值赋给柱状图的css样式属性(height),

3.给这个样式加一个背景颜色或者背景图(背景图的话别忘了设置背景图片定位方式)

e6cb1a03ad541b3098697807b7bf1798.png

2楼时光暗淡了承诺

2021-01-23 21:49

哪有这么麻烦..你如果是用的java直接使用jfreechart

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

点此我要举报以上信息!

推荐资讯

大家都在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Python连接数据库并在UI上绘制柱状图,可以使用以下步骤: 1. 安装必要的:PyQt5、pymysql、matplotlib 2. 编写UI界面:可以使用Qt Designer或手写代码创建一个窗口,添加一个按钮和一个画布 3. 编写Python代码:连接数据库,获取数据绘制柱状图,并将图形显示在UI界面的画布上 下面是一个简单的示例代码,演示如何连接MySQL数据库读取数据,并在UI界面绘制柱状图。 ``` import sys import pymysql import matplotlib.pyplot as plt from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建UI界面 self.setWindowTitle("柱状图") self.setGeometry(100, 100, 800, 600) self.button = QPushButton("绘制柱状图", self) self.button.setGeometry(10, 10, 120, 30) self.canvas = FigureCanvas(plt.Figure(figsize=(6, 4))) self.canvas.setParent(self) self.canvas.move(150, 50) # 绑定按钮点击事件 self.button.clicked.connect(self.plot_barchart) def connect_db(self): # 连接MySQL数据库 db = pymysql.connect( host="localhost", user="root", password="password", database="testdb" ) return db def read_data(self): # 读取数据 db = self.connect_db() cursor = db.cursor() cursor.execute("SELECT name, score FROM students") data = cursor.fetchall() db.close() return data def plot_barchart(self): # 绘制柱状图 data = self.read_data() x = [d[0] for d in data] y = [d[1] for d in data] ax = self.canvas.figure.subplots() ax.bar(x, y) ax.set_title("学生成绩柱状图") ax.set_xlabel("姓名") ax.set_ylabel("成绩") self.canvas.draw() if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 在这个示例,我们创建了一个窗口,添加了一个按钮和一个画布。当用户点击按钮时,程序会从MySQL数据库读取数据,并绘制柱状图。注意,我们使用了PyQt5来创建UI界面,使用了pymysql来连接MySQL数据库,使用了matplotlib绘制柱状图,并使用了FigureCanvas来将图形显示在UI界面的画布上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值