温度记录示例
演示如何创建一个带负值的柱状图,来形象地显示温度信息。
首先,创建两个柱状图,并添加数据,其中一组代表最低温度,另一组代表最高温度。
low?=?QBarSet('最低')
high?=?QBarSet('最高')
????????
low?<-52?<-50?<-45.3?<-37.0?<-25.6?<-8.0?\
???????<-6.0?<-11.8?<-19.7?<-32.8?<-43.0?<-48.0
????????
?high?<11.9?<12.8?<18.5?<26.5?<32.0?<34.8?\
????????<38.2?<34.8?<29.8?<20.4?<15.1?<11.8
然后将这两个序列添加到QStackedBarSeries中
?barSeries?=?QStackedBarSeries()
barSeries.append(low)
?barSeries.append(high)
创建图表对象,并将上面的序列添加到图表中,使用方法setAnimationOptions(QChart.SeriesAnimations)设置序列动画显示。在横坐标上使用QBarCategoryAxis来标志每个月份,纵坐标表示最低最高温度。然后创建图表视图,添加到窗口中显示出来。
代码
完整代码如下:
import?sys
from?PyQt5.QtGui?import?QPainter,?QPen
from?PyQt5.QtCore?import?Qt
from?PyQt5.QtWidgets?import?QApplication,?QMainWindow
from??PyQt5.QtChart?import?(QChartView,?QChart,?QStackedBarSeries,?QBarSet,?
????????????????????????????QLegend,?QBarCategoryAxis,?QValueAxis)
?
class?DemoStackedBarSeries(QMainWindow):
????def?__init__(self,?parent=None):
????????super(DemoStackedBarSeries,?self).__init__(parent)???
????????
?????????#?设置窗口标题
????????self.setWindowTitle('实战?Qt?for?Python:?显示温度')??????
????????#?设置窗口大小
????????self.resize(720,?480)
????????
????????self.createChart()
????????
????def?createChart(self):
????????
????????#创建条状单元
????????low?=?QBarSet('最低')
????????high?=?QBarSet('最高')
????????
????????low?<-52?<-50?<-45.3?<-37.0?<-25.6?<-8.0?\
????????????<-6.0?<-11.8?<-19.7?<-32.8?<-43.0?<-48.0
????????
????????high?<11.9?<12.8?<18.5?<26.5?<32.0?<34.8?\
????????????<38.2?<34.8?<29.8?<20.4?<15.1?<11.8
????????
????????
????????#条状图
????????barSeries?=?QStackedBarSeries()
????????barSeries.append(low)
????????barSeries.append(high)
????????
????????#创建图表
????????chart?=?QChart()
????????chart.addSeries(barSeries)
????????chart.setTitle('摄氏温度记录')
????????chart.setAnimationOptions(QChart.SeriesAnimations)?#设置成动画显示
????????
????????#设置横向坐标(X轴)
????????categories?=?['一月',?'二月',?'三月',?'四月',?'五月',?'六月',?\
????????????'七月',?'八月',?'九月',?'十月',?'十一月',?'十二月']
????????axisX?=?QBarCategoryAxis()
????????axisX.append(categories)
????????axisX.setTitleText('月份')
????????chart.addAxis(axisX,?Qt.AlignBottom)
????????barSeries.attachAxis(axisX)
????????
????????#设置纵向坐标(Y轴)
????????axisY?=?QValueAxis()
????????axisY.setRange(-52,?52)
????????axisY.setTitleText('温度?[°C]')
????????chart.addAxis(axisY,?Qt.AlignLeft)
????????barSeries.attachAxis(axisY)
????????
????????#图例属性
????????chart.legend().setVisible(True)
????????chart.legend().setAlignment(Qt.AlignBottom)
????????
????????#图表视图
????????chartView?=?QChartView(chart)
????????chartView.setRenderHint(QPainter.Antialiasing)
????????
????????self.setCentralWidget(chartView)
??????
????????
if?__name__?==?'__main__':
????app?=?QApplication(sys.argv)
????window?=?DemoStackedBarSeries()
????window.show()
????sys.exit(app.exec())???
运行结果如下图:
本文知识点
- 使用QStackedBarSeries演示温度可视化显示。
请多多关注,评论,收藏,点赞,和转发。