当前位置: 首页 > 面试题库 >

在同一qtchart上绘制烛台和5天平均线,但给出两个x轴图

左宁
2023-03-14
问题内容

我想在同一qchart上绘制烛台和5天平均线,它应该显示 一个 x轴,但给出 两个 x轴。这是代码和情节。

import sys
from PyQt5.QtChart import (QCandlestickSeries, QChart, QChartView)
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import Qt
from PyQt5 import QtChart as qc

"""
data to be load just like the following:

num, open, high, low, close, ma5
1    7380  7520  7380 7510   7324 
2    7520  7580  7410 7440   7372
3    7440  7650  7310 7520   7434
4    7450  7640  7450 7550   7480
5    7510  7590  7460 7490   7502
6    7500  7590  7480 7560   7512
7    7560  7830  7540 7800   7584
... ...
"""

app = QApplication(sys.argv)
#
series = QCandlestickSeries()
series.setDncreasingColor(Qt.red)
series.setIecreasingColor(Qt.green)

ma5 = qc.QLineSeries()  # 5-days average data line
candle_x_axis_label = []  # stores str type data

# in a loop,  series and ma5 append corresponding data
for num, o, h, l, c, m in data:
    series.append(QCandlestickSet(o, h, l, c))
    ma5.append(m)
    candle_x_axis_label.append(str(num))

chart = QChart()

chart.addSeries(series)  # candle
chart.addSeries(ma5)  # ma5 line

chart.setAnimationOptions(QChart.SeriesAnimations)
chart.createDefaultAxes()
chart.legend().hide()

# here is the point
# tm is str list, just like '1, 2, 3, ..., n'
chart.axes(Qt.Horizontal)[0].setCategories(candle_x_axis_label)

#
chartview = QChartView(chart)
ui = QMainWindow()
ui.setGeometry(50, 50, 500, 300)
ui.setCentralWidget(chartview)
ui.show()
sys.exit(app.exec_())

我检查qtchart代码,并找出烛台x轴的类类型为QBarCategoryAxis,但ma5 x轴的类类型为QValueAxis。那么如何去除两个x轴呢?


问题答案:

您只需要获取QAbstractAxis与的X轴相对应的,QLineSeries并使用对其隐藏,则setVisible(False)必须使用QChart::axisX()

chart.axisX(ma5).setVisible(False)

完整的代码:

import sys
from PyQt5.QtChart import QCandlestickSeries, QChart, QChartView, QCandlestickSet
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import Qt, QPointF
from PyQt5 import QtChart as qc

data = ((1, 7380, 7520, 7380, 7510, 7324), 
    (2, 7520, 7580, 7410, 7440, 7372),
    (3, 7440, 7650, 7310, 7520, 7434),
    (4, 7450, 7640, 7450, 7550, 7480),
    (5, 7510, 7590, 7460, 7490, 7502),
    (6, 7500, 7590, 7480, 7560, 7512),
    (7, 7560, 7830, 7540, 7800, 7584))


app = QApplication(sys.argv)
#
series = QCandlestickSeries()
series.setDecreasingColor(Qt.red)
series.setIncreasingColor(Qt.green)

ma5 = qc.QLineSeries()  # 5-days average data line
tm = []  # stores str type data

# in a loop,  series and ma5 append corresponding data
for num, o, h, l, c, m in data:
    series.append(QCandlestickSet(o, h, l, c))
    ma5.append(QPointF(num, m))
    tm.append(str(num))

chart = QChart()

chart.addSeries(series)  # candle
chart.addSeries(ma5)  # ma5 line

chart.setAnimationOptions(QChart.SeriesAnimations)
chart.createDefaultAxes()
chart.legend().hide()

chart.axisX(series).setCategories(tm)
chart.axisX(ma5).setVisible(False)

chartview = QChartView(chart)
ui = QMainWindow()
ui.setGeometry(50, 50, 500, 300)
ui.setCentralWidget(chartview)
ui.show()
sys.exit(app.exec_())


 类似资料:
  • 通过使用matplotlib,我想绘制随时间变化的训练精度、验证精度、训练误差和验证误差。x轴是所有曲线的迭代次数。我想为精度值保留左x轴,为损耗值保留右y轴,然后在同一个图上绘制所有四个。 为了做到这一点,我尝试了几件事,最后我没有达到我想要的程度。 有人能帮我吗? 我的代码(没有按我的要求工作): 我想这样做(但我没有3条曲线,而是4条曲线)(我从这里拍摄图像:https://datascie

  • 我使用MPChart来显示条形图。我的价值观有积极的也有消极的。我想展示传统数学中使用的x轴。使用这个代码我的图表显示垂直线(只需要零) 请提供一些样本,删除所有水平线,但零 编辑:即使当< code > yaxis . setlabelcount(1)(1因为需要显示零值)时,impl看起来像: 那么,是否建议覆盖这个实现呢?

  • 所以我在上面创建了这个表格,现在我试图用它来绘制 但是现在我想弄清楚如何画一条均值线,例如,我在图像的右边画了爱尔兰的均值,我不知道如何在这个均值的图表上画一条线。真的,任何帮助感谢。干杯,伙计们。

  • 我正在使用python中的matplotlib绘制直方图,并希望绘制一条代表数据集平均值的线,以虚线的形式覆盖在直方图上(或者其他颜色也可以)。关于如何在柱状图上画一条线有什么想法吗? 我正在使用plot()命令,但不确定如何绘制垂直线(即,我应该为y轴指定什么值? 谢谢

  • 我想画出每种语言的总和和平均数。我不确定我的代码是否符合我的要求。我在画这张图时出错了。我不知道我在哪里把编码搞砸了。我需要一些帮助。 这是错误消息

  • 我有一个从pandas数据框创建的直方图,我想绘制一条代表数据集平均值的垂直虚线。我已经回顾了这个线程,这正是我正在寻找的样式,但是,我不知道如何使它与我的代码一起工作(如下所示): 我最终收到了以下错误: 不知道这意味着什么,任何帮助都将不胜感激。 编辑:我的数据文件是一个有一列的csv,第一行是一个标题(字符串),所有后续的107行都是从app开始的值。1.0E 11至4.0E 11 假数据(

  • 我在MPAndroidChart_GITHUB中使用了3.1.0版本 我试过这个代码 activity_test.xml 首先,更改文件是布局xml activity.java 但这太奇怪了

  • 我从以下网站运行代码: https://ntguardian.wordpress.com/2018/07/17/stock-data-analysis-python-v2/ 这会生成蜡烛图。我在Spyder中运行过类似的代码,我对代码所做的唯一修改是 我似乎不明白为什么在我没有修改代码的情况下,我会看到如此明显的差异。 Spyder中是否有一些怪癖导致了这个问题,还是我需要多几行代码? 请帮助我,